更新Visual Studio与WinUI至最新版本后,全信任UWP应用加载System.Runtime.InteropServices.WindowsRuntime组件失败求助
解决WinUI 2.6升级后System.Runtime.InteropServices.WindowsRuntime版本不匹配问题
我之前升级WinUI版本时也碰到过几乎一模一样的版本绑定问题,给你几个经过验证的解决步骤:
1. 添加手动绑定重定向
这个错误本质是程序集引用的版本和实际找到的版本不匹配,我们可以在项目的app.config文件里添加绑定重定向,让运行时把对4.0.3.0的请求指向你已安装的4.0.1版本:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Runtime.InteropServices.WindowsRuntime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="4.0.3.0" newVersion="4.0.1.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
如果你的项目没有app.config,直接新建一个放在项目根目录即可。
2. 彻底清理项目并重建缓存
有时候VS的缓存或者旧的编译文件会导致依赖混乱,按以下步骤操作:
- 关闭Visual Studio,手动删除项目下的
bin和obj文件夹 - 打开VS,依次点击工具 > NuGet包管理器 > 管理解决方案的NuGet包,切换到设置选项卡,点击清除所有NuGet缓存
- 或者用命令行执行:
dotnet nuget locals all --clear - 回到解决方案,右键选择还原NuGet包,然后重新生成整个解决方案
3. 替换为Microsoft.Windows.SDK.Contracts包
单独的System.Runtime.InteropServices.WindowsRuntime包现在已经逐渐被Microsoft.Windows.SDK.Contracts替代,这个包包含了所有必要的Windows Runtime互操作组件,更适配WinUI项目:
- 先卸载当前安装的
System.Runtime.InteropServices.WindowsRuntime包 - 搜索并安装
Microsoft.Windows.SDK.Contracts包,选择和你的项目目标Windows SDK版本匹配的版本(比如如果目标是Windows 10 2004,就选10.0.19041.x版本)
4. 检查项目的Windows SDK版本
WinUI 2.6对项目的目标SDK版本有要求(至少Windows 10 1809,版本号17763),确认你的项目设置:
- 右键项目 > 属性 > 应用选项卡
- 确保目标版本和最小版本都设置为WinUI 2.6支持的SDK版本,建议设置为最新的稳定版
按照上面的步骤逐一排查,应该能解决这个版本不匹配的问题。
内容的提问来源于stack exchange,提问作者Tofuu
相关产品推荐
相关产品推荐

