UWP应用使用Microsoft.Azure.Devices.Client调用API时引发文件未找到异常
解决UWP应用调用Azure IoT Hub SDK时的System.IO.FileNotFoundException异常
我之前碰到过一模一样的UWP+Azure IoT Hub依赖问题,这个错误的核心原因是UWP基于的.NET(Core)运行环境,和旧版IoT Hub SDK依赖的.NET Framework组件版本不兼容,导致找不到指定的System.Net.Security程序集。下面给你几个亲测有效的解决步骤:
1. 优先更新Azure IoT Hub SDK版本
旧版的Microsoft.Azure.Devices.Client NuGet包对.NET Framework的组件有强版本依赖,而UWP的运行环境里对应的组件版本和这个要求不匹配。建议你直接把这个包更新到最新稳定版——新版本已经做了UWP兼容性优化,会自动适配UWP的依赖体系。
- 操作步骤:打开Visual Studio的NuGet包管理器,找到
Microsoft.Azure.Devices.Client,选择更新到最新版,之后清理解决方案再重新生成项目。
2. 添加程序集绑定重定向
如果更新SDK后问题依旧,可以手动添加绑定重定向,让系统把对旧版本System.Net.Security的请求,重定向到UWP环境中可用的版本:
- 在UWP项目中新建或编辑
app.config文件,添加以下配置:<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Net.Security" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration> - 保存后重新生成项目,让配置生效。
3. 调整UWP项目的Windows版本设置
过低的UWP目标版本可能会缺少必要的.NET组件兼容支持:
- 右键UWP项目 → 属性 → 应用程序选项卡
- 将目标版本设置为Windows 10 1809(10.0.17763.0)或更高,最小版本不低于Windows 10 1607(10.0.14393.0)
- 应用设置后重新生成项目。
4. 尝试使用UWP专用SDK包(备选方案)
如果主SDK包还是有问题,可以试试Microsoft.Azure.Devices.Client.Uwp这个专门为UWP优化的NuGet包(不过现在主SDK包已经整合了UWP支持,这个包更多是旧版本的兼容选项),它的依赖会更贴合UWP的运行环境。
按照上面的步骤一步步排查,应该就能解决你遇到的System.IO.FileNotFoundException异常了。
内容的提问来源于stack exchange,提问作者Pankaj Garg
相关产品推荐
相关产品推荐

