You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2019无法定位Windows程序集:PoshWinRT库引用错误求助

解决PoshWinRT在Windows 10+PowerShell Core下的编译与程序集引用问题

我来帮你一步步搞定这个困扰你的问题——从Windows 7迁移到Win10后PoshWinRT编译失败,还要适配PowerShell Core(pwsh),核心问题就是WinRT程序集引用的路径和方式在Win10及.NET Core环境下发生了变化,咱们逐个解决:

1. 先找到Win10里正确的Windows.winmd位置

Windows 7里的WinRT程序集路径和Win10完全不同,Win10中Windows.winmd的默认路径是:

C:\Windows\System32\WinMetadata\Windows.winmd

先确认这个文件存在(正常Win10系统都会有),之前你看到解决方案里的依赖项显示文件被删除,就是因为项目还在找Win7时代的旧路径。

2. 修正项目的程序集引用

别再尝试添加System.Windows这类WPF程序集了,它们和WinRT完全是两回事。正确的操作是:

  • 右键PoshWinRT项目 → 选择「添加」→「引用」
  • 点击「浏览」,导航到上面的C:\Windows\System32\WinMetadata路径,选中Windows.winmd添加
  • 添加后,在引用列表里找到这个WinMD文件,右键→属性,确保「复制本地」设置为「False」(因为这是系统自带的程序集,不需要复制到输出目录)

3. 适配PowerShell Core的关键:改用NuGet包管理WinRT引用

PowerShell Core基于.NET Core/.NET 5+,原生支持WinRT的方式和.NET Framework不同,更推荐用官方的NuGet包来避免路径问题:

  • 右键项目 → 「管理NuGet程序包」
  • 搜索并安装Microsoft.Windows.SDK.Contracts包(选择和你的Win10版本匹配的版本,比如Win10 21H2对应10.0.22000.282)
  • 安装完成后,删掉之前手动添加的Windows.winmd引用,这个NuGet包会自动帮你引入所有必要的WinRT程序集,包括Windows.Foundation.IAsyncAction这类类型

4. 清理缓存并重新构建

之前的构建缓存可能残留了旧的引用信息,一定要做这两步:

  • 删除项目目录下的bin和obj文件夹
  • 在Visual Studio里点击「生成」→「清理解决方案」,然后再「重新生成解决方案」

5. 调整项目目标框架(如果需要)

如果你的PoshWinRT项目还是目标.NET Framework(比如4.7.2),要适配PowerShell Core的话,建议把目标框架改成.NET 6或更高版本(.NET 6是LTS版本,更稳定):

  • 右键项目 → 「属性」
  • 在「应用」标签页的「目标框架」下拉菜单里选择.NET 6.0(确保选带Windows的版本,比如.NET 6.0 (Windows))

做完这些,CS0012的错误应该就会消失,而且编译出来的程序集也能正常导入到pwsh中了。

内容的提问来源于stack exchange,提问作者xdhmoore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 08:42:29