Newsoft.Json版本冲突之解决

当解决方案的项目多到一定的程度的时候,在 dll 的引用管理上难免有疏忽,最近由于Newsoft.Json 的引用冲突挠破了头皮。项目报错如下:


这种错误很常见,一般是程序引用了不匹配的版本所致的,删除掉原来的引用,重新引用解决方案下对应版本的 dll 即可解决,但是这次情况特殊,并不是引用错误,而是引用冲突:新项目中引用了两个不同的老项目生成的 dll 但是老项目中分别用了不同版本的 Newsoft.Json 不管引用哪个版本的 Newsoft.Json 程序总会报错。

解决办法如下:

web.config  的 configuration节点下面注明

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.5.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

就强制使用版本4.5.0.0 的Newsoft.Json 了,这样就不会出现上述错误。

出现上述错误主要有以下几种原因:

第一,引用不存在vs自动找到旧版的。
第二,web.config配置的版本号跟实际想要版本号不对。
第三,bin文件夹里面的根本就是旧版的。
第四,本文中描述的这种。

使用这种解决方法也可以解决其他 dll 版本冲突,不过这要求有一个大前提:高版本的dll兼容低版本的dll。


参考:

http://www.lxway.com/48528444.htm

http://stackoverflow.com/questions/21498074/how-can-i-fix-assembly-version-conflicts-with-json-net-after-updating-nuget-pack

http://www.lxway.com/488185852.htm

原文地址:https://www.cnblogs.com/ice-/p/6165782.html