WindowsAzure.Storage 9.1.1调用时Newtonsoft.Json依赖加载失败求助
解决WindowsAzure.Storage 9.1.1与Newtonsoft.Json版本绑定冲突的问题
这个问题我碰到过好多次了,本质就是**.NET程序集版本绑定重定向**没配置正确导致的。虽然你装的Newtonsoft.Json 11.0.2完全满足WindowsAzure.Storage声明的>=10.0.2依赖要求,但CLR默认会死磕组件编译时依赖的具体版本(这里是10.0.0.0),不会自动向上兼容,所以才会抛出找不到10.0.0.0版本的异常。
下面给你具体的解决步骤:
- 打开项目的
App.config(如果是Web项目就是Web.config) - 在
<configuration>节点下添加或者完善<runtime>配置块,加入Newtonsoft.Json的版本重定向规则:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.2.0" /> </dependentAssembly> </assemblyBinding> </runtime>
这里解释下配置的意义:
oldVersion覆盖了从0到11.0.0.0的所有版本,确保任何对旧版本Newtonsoft.Json的引用都会被重定向newVersion要严格设置为你实际安装的11.0.2版本号,必须和项目中引用的版本完全一致保存配置后重新编译运行项目,应该就能解决这个问题了
另外还有两个小技巧可以帮你排查这类问题:
- 用Visual Studio自带的程序集绑定日志查看器(Fuslogvw.exe),能详细追踪程序集加载失败的原因,确认重定向是否生效
- 如果是用NuGet管理包的项目,也可以试试在Package Manager Console里执行
Update-Package -reinstall Newtonsoft.Json,让NuGet自动帮你修复绑定重定向配置
内容的提问来源于stack exchange,提问作者Fanetic
相关产品推荐
相关产品推荐

