在 .NET 6 中动态加载 DLL 时出现“System.Management 目前仅支持 Windows 桌面应用程序”错误

问题描述 投票:0回答:1

我正在使用“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

c# .net-6.0 wmi dynamic-loading
1个回答
0
投票

显然这是由于使用.Net Core...

我发现了这个:如何使用它

这就是有效的:

in the csproj file. Add the following usually at the beginning:

<PropertyGroup> 
    <UseWPF>true</UseWPF>
    <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>

Reload project  
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.