在.NET Core应用中运行PowerShell时为何出现Microsoft.Management.Infrastructure缺失异常?
解决方案:ClickOnce发布后缺失Microsoft.Management.Infrastructure.dll
问题原因
Microsoft.PowerShell.SDK间接依赖Microsoft.Management.Infrastructure(WMI管理核心库),但ClickOnce自包含发布时,可能因该依赖为间接引用或私有资产设置,导致组件未被自动打包进发布包。
解决步骤
1. 显式添加Microsoft.Management.Infrastructure NuGet包
直接在项目中添加该依赖,确保发布工具能检测并包含它:
在项目的.csproj文件中补充引用:
<ItemGroup> <PackageReference Include="Microsoft.Management.Infrastructure" Version="1.0.0" /> <PackageReference Include="Microsoft.PowerShell.SDK" Version="7.3.4" /> </ItemGroup>
或通过NuGet包管理器执行安装命令:
Install-Package Microsoft.Management.Infrastructure -Version 1.0.0
2. 确认依赖项的“复制本地”属性
在Visual Studio中,右键点击项目引用里的Microsoft.Management.Infrastructure,选择「属性」,将复制本地设置为True,确保该DLL会被复制到输出目录。
3. 验证发布输出目录
完成发布后,打开ClickOnce发布的输出文件夹,检查是否存在Microsoft.Management.Infrastructure.dll。若缺失,手动从本地项目的bin\Release\netX\win-x64目录复制该DLL到发布目录,再重新部署测试。
4. 检查自包含发布配置
确认ClickOnce发布配置满足:
- 选择自包含部署模式
- 目标运行时设置为Windows Server 2019对应的架构(通常为
win-x64) - 勾选“包含所有依赖项”相关选项
内容的提问来源于stack exchange,提问作者JohnB
相关产品推荐
相关产品推荐

