C# MVC4 默认引入Newtonsoft.Json4.5.0版本,现想修改为更高的版本Newtonsoft.Json6.0.0 发现不兼容
错误如下:
无法解决“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”与“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”之间的冲突。正在随意选择“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”。
修改配置文件、*.csproj 项目文件 都没用。
求解。
不知道你怎么引用的。直接采用NuGet 安装Json.Net的最新版本,自动会帮你搞定兼容问题。
原来的删干净。
这种情况通常是因为你使用的其中一个DLL还是用的4.5的引用。
引入的地方都修改了 还是不行。项目7层 除了 3层引用,替换无用。
WebApiConfig.Register(GlobalConfiguration.Configuration); 注册时就不兼容6.0的
@望周虎: 你用第三方工具(NODEPAD++)之类的,全文搜索Newtonsoft.Json, Version=4.5.0.0
,或者用NOTEPAD直接查看.csproj,肯定能找个这个字符串的。
@爱编程的大叔: Notepad++ 搜索,然后修正。正解啊!
把 web.config 里有关Newtonsoft.Json的信息全部移除,然后删除引用的dll和Package目录下的Newtonsoft.Json文件夹,再通过NuGet引进,我也碰过一次。
我也遇到这个问题了,你解决了吗
查看一下项目的packages.config 看看哪个的不是最新版 然后用NuGet更新 就ok了 我也前段时间遇到了
@xingbo: 我这个还是不行,我修改了package.config中的json.net版本,然后用nuget重新更新了。发现csproj中的版本也相应的被修改了。可以编译。但是运行时候就会报错,提示还是4.5什么的。
报错位置:
WebApiConfig.Register(GlobalConfiguration.Configuration);
说一下我的解决办法,到Nuget中手动搜索Newtonsoft.Json,手动安装最新版本,安装完毕后在web.config中新增了以下节点<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
最重要的是<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />这个,newVersion="8.0.0.0"就是手动安装的最新版本的版本号,解决此问题
靠谱,我虽然我是手动引用,但在配置文件里面加了这段话之后,警告消失,
字面意思应该是统一了引用
我也是报这个错。
原因是妈蛋七牛的sdk引用了第三方dll。
我都不知道这种开发sdk的人脑子里在想什么,你要引用这种开源的dll,你不能找一个能把源码包一起拆进dll里面去的反序列化工具进去吗?
等我跑去官网找七牛最新的dll一引用,发现方法接口全变了,换一个新的sdk不成,那我找老的sdk过来自己编译一下把引用改为最新的newTownSoft的dll总可以吧?妈蛋发现连老版本的源代码都找不到,github上展示的6.0的竟然接口和我之前下载到的6.0的不一样。。。。
真相问候这种开发人员。搞这破玩意儿浪费几个小时
最佳答案很好,这样解决最爽,最简单。我的话,用控制台安装,之后提示nuget版本需要更新,然后更新完,安装Json.Net。就可以了