Desktop Bridge应用对接Azure通知中心WNS时找不到System.Runtime.WindowsRuntime文件
我之前帮朋友排查过一模一样的问题,这个System.Runtime.WindowsRuntime找不到的错误在Desktop Bridge(也就是现在的MSIX打包应用)里挺常见的,多半是依赖配置或者打包环节出了问题,给你几个实用的解决方向:
解决Desktop Bridge应用WNS注册时的程序集加载异常
检查项目框架与NuGet依赖
首先确认你的项目目标框架是.NET Framework 4.6.2及以上(Desktop Bridge对.NET Framework的最低要求是4.6.2)。然后手动补充依赖:- 右键项目 → 管理NuGet程序包
- 搜索并安装
System.Runtime.WindowsRuntime包(选和你框架匹配的版本,4.6.2对应4.0.10版本左右即可) - 找到项目引用里的
System.Runtime.WindowsRuntime,右键→属性,把复制本地设置为True
添加程序集绑定重定向
版本不匹配是常见诱因,在app.config的<runtime>节点里添加绑定重定向,强制指向正确版本:<runtime> <dependentAssembly> <assemblyIdentity name="System.Runtime.WindowsRuntime" publicKeyToken="b77a5c561934e089" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" /> </dependentAssembly> </runtime>核对MSIX打包配置
如果你用MSIX打包项目,要确保依赖项完整:- 打开打包项目的
Package.appxmanifest - 切换到「依赖项」标签,确认已添加
Microsoft.VCLibs和对应版本的.NET Framework依赖(比如Microsoft.NET.Native.Framework.2.2) - 主应用项目要确保已经关联打包配置(右键主项目→发布→创建应用包,按向导完成配置即可)
- 打开打包项目的
确保程序集被打包进MSIX
有时候引用正确但打包时漏了文件,需要检查:- 右键
System.Runtime.WindowsRuntime引用→属性 - 把「复制到输出目录」设为「始终复制」
- 重新构建打包,用7-Zip打开MSIX包,确认
System.Runtime.WindowsRuntime.dll在应用目录里
- 右键
用UI线程调度UWP API调用
WNS注册相关的UWP API需要在UI线程执行,线程上下文不对也可能间接引发加载异常,试试用Dispatcher调度:await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, async () => { // 这里放你的WNS注册逻辑 var pushChannel = await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); // 后续向Azure Notification Hub注册的代码 });
内容的提问来源于stack exchange,提问作者Katja
相关产品推荐
相关产品推荐

