System.ManagementNuget中的组件从系统处理器ID,MAC地址和BIOS序列号创建唯一的设备ID。 在Visual Studio调试器测试时,这一切都很好。但是,当将
System.Management.dll添加到应用程序安装程序(InstallShield Installer)时,我自然选择了App构建目标文件夹中的System.Management.dll的版本。事实证明,最终在该文件夹中的DLL的版本是一个no-op版本,抛出不支持的例外,说“系统。 解决方案:
I在buildSystem.Management版本6.0,因此在“ NetCoreApp3.1”文件夹中。 结论 许多情况下,微软没有做正确的事情。在这种情况下,我的应用程序是一个.NET 5 Windows桌面应用程序,因此我们都认为MSBuild可以找出正确的事情。不是这样。在这种情况下,我至少希望.NET基金会能为此提供信息。好吧,现在你们现在也知道! Cheers 我认为这也许是因为deps.json文件缺少,导致存根版本是从应用程序目录加载的,而不是从Runtimes目录中加载的。因此,要么可以将所需的依赖项安装到应用程序根目录,要么可以维护构建目录的现有层次结构,还可以分发依赖关系配置。
对于自动复制并替换文件,将其添加到Postbuild命令中。 我的案子是net8.0