VS2022设置x86/x64目标平台时丢失Windows运行时库报错
问题解决:.NET 4.8项目切换x86/x64时
Windows.Devices命名空间缺失错误 核心问题
项目目标框架为.NET 4.8(无法升级),切换到x86/x64平台以生成MSIX安装包时,出现报错:
The type or namespace name 'Devices' does not exist in the namespace 'Windows' (are you missing an assembly reference?)
设置为Any CPU时无问题,硬盘损坏恢复项目后出现该异常;同时VS2019/2022无法创建.NET 4.8项目(仅显示.NET 6/7选项),尝试安装Microsoft.Windows.SDK.Contracts NuGet包失败,备份项目也存在相同问题。
解决步骤
1. 修复.NET Framework 4.8 SDK/运行时
VS无法显示.NET 4.8项目模板,大概率是SDK损坏或未安装完整:
- 下载并修复安装Microsoft .NET Framework 4.8开发人员包
- 安装完成后重启Visual Studio,确认能正常创建.NET 4.8项目
2. 手动添加Windows Runtime引用
x86/x64平台下WinRT引用缺失是常见原因,手动补充:
- 右键项目 → 「添加」→「引用」→「浏览」
- 定位到路径:
C:\Program Files (x86)\Windows Kits\10\UnionMetadata\[你的SDK版本号]\Windows.winmd(比如10.0.22621.0) - 添加引用后,在引用属性面板设置:
- 「复制本地」设为
False - 「特定版本」设为
False
- 「复制本地」设为
3. 清理项目缓存与重新生成
缓存残留可能导致平台切换异常:
- 删除项目根目录下的
bin、obj文件夹 - 清除NuGet缓存:「工具」→「NuGet包管理器」→「包管理器设置」→「清除所有NuGet缓存」
- 重新生成整个解决方案
4. 检查项目文件的平台配置
卸载项目后编辑.csproj文件,确认平台配置一致:
- 右键项目 → 「卸载项目」→ 「编辑xxx.csproj」
- 查找是否存在针对x86/x64平台的条件性引用缺失,确保WinRT引用(如
<Reference Include="Windows" />)未被限制在特定平台 - 保存后重新加载项目并切换平台测试
5. 回退到VS2017测试
如果VS2019/2022兼容性仍有问题,尝试使用VS2017:
- 安装VS2017时务必勾选.NET Framework 4.8相关组件
- 加载项目后切换x86/x64平台验证是否恢复正常
内容的提问来源于stack exchange,提问作者P Coltrane
相关产品推荐
相关产品推荐

