.net 如何修复“系统.管理只支持Windows桌面应用程序”异常

s2j5cfk0  于 2023-04-07  发布在  .NET
关注(0)|答案(2)|浏览(467)

问题:

我们的应用程序是一个.NET 5 Windows桌面应用程序。许可功能要求应用程序使用NuGet的***System.Management***组件,根据系统处理器ID、MAC地址和BIOS序列号创建唯一的设备ID。
当从Visual Studio调试器测试它时,这一切都工作得很好。将 * System.Management.dll * 添加到应用程序安装程序时(InstallShield安装程序)我很自然地选择了应用程序的构建目标文件夹中的 * System.Management.dll * 版本。结果发现,最终位于该文件夹中的DLL版本是一个无操作版本,它会抛出不支持的异常,并显示***“System.仅Windows桌面应用支持管理”***。

cvxl0en2

cvxl0en21#

解决方案:

我在buildTargetFolder\runtimes\win\lib\netcoreappX.x文件夹中找到了 * System.Management.dll * 的正确版本。在我的示例中,由于我使用的是***System.Management***版本6.0,因此它位于“netcoreapp3.1”文件夹中。

总结

有很多情况下,微软没有做正确的事情。在这种情况下,我的应用程序是一个具体的.NET 5 Windows桌面应用程序,所以我们都认为msbuild可以找出正确的事情要做。不是这样的。在这种情况下,我至少希望.NET基金会会会提供有关这方面的信息。好了,现在你们都知道了,现在,以及!
干杯

xoefb8l8

xoefb8l82#

我认为这可能是因为缺少deps.json文件,导致stub版本从application目录加载,而不是从runtimes目录加载。因此,可以将所需的依赖项安装到application根目录,或者可以维护build目录中的现有层次结构,但也可以分发依赖项配置。
https://learn.microsoft.com/en-us/dotnet/core/dependency-loading/default-probing

相关问题