首页 新闻 会员 周边

MVC 4 Newtonsoft.Json4.5.0

0
悬赏园豆:10 [已解决问题] 解决于 2014-10-31 11:34

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 项目文件 都没用。

求解。

wzh0717的主页 wzh0717 | 菜鸟二级 | 园豆:319
提问于:2014-10-30 16:07
< >
分享
最佳答案
0

不知道你怎么引用的。直接采用NuGet 安装Json.Net的最新版本,自动会帮你搞定兼容问题。

收获园豆:4
幻天芒 | 高人七级 |园豆:37175 | 2014-10-30 16:25
其他回答(7)
0

原来的删干净。

收获园豆:2
CaiYongji | 园豆:1267 (小虾三级) | 2014-10-30 16:08
0

这种情况通常是因为你使用的其中一个DLL还是用的4.5的引用。

收获园豆:2
爱编程的大叔 | 园豆:30839 (高人七级) | 2014-10-30 16:09

引入的地方都修改了 还是不行。项目7层  除了 3层引用,替换无用。


WebApiConfig.Register(GlobalConfiguration.Configuration); 注册时就不兼容6.0的

支持(0) 反对(0) wzh0717 | 园豆:319 (菜鸟二级) | 2014-10-30 16:11

@望周虎: 你用第三方工具(NODEPAD++)之类的,全文搜索Newtonsoft.Json, Version=4.5.0.0

,或者用NOTEPAD直接查看.csproj,肯定能找个这个字符串的。

支持(1) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2014-10-30 17:16

@爱编程的大叔: Notepad++ 搜索,然后修正。正解啊!

支持(0) 反对(0) JRoger | 园豆:258 (菜鸟二级) | 2016-03-08 16:17
1

把 web.config 里有关Newtonsoft.Json的信息全部移除,然后删除引用的dll和Package目录下的Newtonsoft.Json文件夹,再通过NuGet引进,我也碰过一次。

收获园豆:2
Yu | 园豆:12980 (专家六级) | 2014-10-31 11:09
0

我也遇到这个问题了,你解决了吗

王俊-92 | 园豆:202 (菜鸟二级) | 2015-03-17 22:28

查看一下项目的packages.config 看看哪个的不是最新版 然后用NuGet更新 就ok了  我也前段时间遇到了

支持(0) 反对(0) xingbo | 园豆:210 (菜鸟二级) | 2015-03-19 09:20

@xingbo: 我这个还是不行,我修改了package.config中的json.net版本,然后用nuget重新更新了。发现csproj中的版本也相应的被修改了。可以编译。但是运行时候就会报错,提示还是4.5什么的。

报错位置:

WebApiConfig.Register(GlobalConfiguration.Configuration);

支持(0) 反对(0) 王俊-92 | 园豆:202 (菜鸟二级) | 2015-03-19 10:30
0

说一下我的解决办法,到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"就是手动安装的最新版本的版本号,解决此问题

熙冠 | 园豆:95 (初学一级) | 2016-04-21 14:53

靠谱,我虽然我是手动引用,但在配置文件里面加了这段话之后,警告消失,

字面意思应该是统一了引用

支持(0) 反对(0) xjsaber | 园豆:402 (菜鸟二级) | 2016-12-08 14:39
0

我也是报这个错。

原因是妈蛋七牛的sdk引用了第三方dll。

我都不知道这种开发sdk的人脑子里在想什么,你要引用这种开源的dll,你不能找一个能把源码包一起拆进dll里面去的反序列化工具进去吗?

等我跑去官网找七牛最新的dll一引用,发现方法接口全变了,换一个新的sdk不成,那我找老的sdk过来自己编译一下把引用改为最新的newTownSoft的dll总可以吧?妈蛋发现连老版本的源代码都找不到,github上展示的6.0的竟然接口和我之前下载到的6.0的不一样。。。。

真相问候这种开发人员。搞这破玩意儿浪费几个小时

LoveCoder | 园豆:216 (菜鸟二级) | 2018-02-10 11:23
0

最佳答案很好,这样解决最爽,最简单。我的话,用控制台安装,之后提示nuget版本需要更新,然后更新完,安装Json.Net。就可以了

爛轲 | 园豆:165 (初学一级) | 2018-04-16 14:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册