加载Newtonsoft.Json 6.0.0.0程序集失败求助:版本兼容问题
解决Newtonsoft.Json程序集版本加载冲突问题
这个问题在.NET项目里很常见——Microsoft.AspNet.WebApi.Client 5.2.4本身依赖的是Newtonsoft.Json 6.0.0.0版本,虽然你手动引用了更高的11.0.2版本,但CLR默认会严格按照依赖声明的版本去查找,所以就出现了版本不匹配的加载错误。下面是几个可靠的解决方案:
方案1:添加程序集绑定重定向(最推荐)
这是解决.NET版本冲突的标准做法,通过配置告诉CLR把对旧版本的请求重定向到你当前使用的版本。在项目的app.config(桌面应用)或web.config(Web应用)中添加以下配置:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <!-- 重定向Newtonsoft.Json的版本 --> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <!-- 匹配所有低于等于11.0.0.0的版本,重定向到11.0.0.0 --> <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
注意:
newVersion填11.0.0.0即可,因为.NET程序集版本匹配主要看前两位(主版本和次版本),11.0.2的主/次版本就是11.0。
方案2:升级Microsoft.AspNet.WebApi.Client到兼容版本
如果你的项目允许升级依赖包,可以把Microsoft.AspNet.WebApi.Client升级到5.2.7及以上版本——这些版本已经更新了对Newtonsoft.Json的依赖,支持到10.x甚至更高版本,这样就能和你引用的11.0.2自然兼容,不需要额外的绑定重定向。
操作步骤:
- 右键项目 → 选择“管理NuGet程序包”
- 找到
Microsoft.AspNet.WebApi.Client,点击“更新”按钮选择合适的版本
方案3:清理项目缓存并重建
有时候项目的bin或obj目录会残留旧版本的Newtonsoft.Json.dll,导致CLR加载错误。可以按以下步骤操作:
- 右键项目 → 选择“清理”
- 手动删除项目目录下的
bin和obj文件夹 - 重新生成项目
方案4:确认引用的复制本地属性
检查Newtonsoft.Json的引用属性,确保“复制本地”设置为True:
- 在解决方案资源管理器中找到Newtonsoft.Json引用
- 右键 → 属性
- 把“复制本地”改为
True(这样编译时会将正确版本的dll复制到输出目录)
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

