我正在使用“Microsoft.Windows.Compatibility”包来获取 .NET 6 应用程序中的底板序列号。我的代码如下所示:
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
var mobos = searcher.Get();
foreach (var m in mobos)
{
return m["SerialNumber"].ToString() ?? "";
}
当我在控制台应用程序中运行此代码时,它可以正常工作。但是,当我创建一个执行此代码的 DLL 并使用 LoadContext 动态加载该 DLL 时,出现以下错误:
System.Management currently is only supported for Windows desktop applications.
如何解决这个问题?
验证包安装:确保在控制台应用程序和 DLL 项目中安装并引用“Microsoft.Windows.Compatibility”包。 目标框架:确认控制台应用程序和 DLL 项目都针对 .NET
显然这是由于使用.Net Core...
我发现了这个:如何使用它
这就是有效的:
in the csproj file. Add the following usually at the beginning:
<PropertyGroup>
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
Reload project