GOOGLE ADS

sábado, 30 de abril de 2022

Cómo solucionar la excepción "System.Management solo es compatible con las aplicaciones de escritorio de Windows"

La cuestión:

Nuestra aplicación es una aplicación de escritorio de Windows.NET 5. La capacidad de licencia requiere que la aplicación use el componente System.Management de NuGet para crear una identificación de dispositivo única a partir de la identificación del procesador del sistema, la dirección MAC y el número de serie del BIOS.

Todo esto funcionó muy bien al probarlo desde el depurador de Visual Studio. Sin embargo, al agregar System.Management.dll al instalador de la aplicación (instalador de InstallShield), naturalmente, seleccioné la versión de System.Management.dll que estaba en la carpeta de destino de compilación de la aplicación. Resulta que la versión de la DLL que termina en esa carpeta es una versión no operativa que arroja excepciones no admitidas que dicen "System.Management solo es compatible con las aplicaciones de escritorio de Windows".


Solución del problema

La solución:

Encontré la versión correcta de System.Management.dll en la carpeta TargetFolder \runtimes\win\lib\ netcoreapp X.x. En mi caso, como estoy usando System.Management versión 6.0, está en la carpeta "netcoreapp3.1".

Conclusión

Hay muchos casos en los que Microsoft no hace lo correcto. En este caso, mi aplicación era específicamente una aplicación de escritorio de Windows.NET 5, por lo que todos pensaríamos que msbuild podría averiguar qué hacer correctamente. No tan. En tal caso, al menos hubiera esperado que.NET Foundation hubiera proporcionado información al respecto. ¡Bueno, ahora todos ustedes también lo saben!

Salud

No hay comentarios:

Publicar un comentario

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...