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ónHay 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