类型'JsonConvert'存在于'Newtonsoft.Json ver 9和10中

时间:2017-05-22 13:35:44

标签: c# json.net

我一直困扰着Newtonsoft.Json似乎在我的项目中有多个版本的问题。问题是它不是。我在项目中安装了10个,这是唯一的DLL。 GAG没有dll,web.config似乎是正确的。

The type 'JsonConvert' exists in both 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' and 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'    

有没有人见过这个?有没有办法指定在代码级别或web.config中使用的版本?

3 个答案:

答案 0 :(得分:8)

尝试安装newtonsoft.json的先前版本

在我的情况下,我将newtonsoft从6更新为11.0.2。 编译给出了此错误消息,其中包括版本6和11。 我尝试卸载,但没有这样做,这是导致依赖的原因。 但是我使用了此命令,因此成功降级了。 安装软件包Newtonsoft.Json -Version 11.0.1

此错误消失了。

答案 1 :(得分:1)

你应该强制只加载一个程序集,我建议加载最新的程序集。您可以检查所有引用的程序集是否使用该版本。如果没有,您必须将其添加到web.config文件中:

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

这将强制使用Newtonsoft.Json的第10版。确保从bin文件夹中删除版本9。

答案 2 :(得分:0)

这似乎是由于对Newtonsoft.Json DLL的多个不可见引用

  1. 右键单击您的项目,然后选择“卸载项目”。
  2. 现在再次右键单击并选择Edit MyProject.csproj(或任何名为您的项目的东西)
  3. 在此文件中搜索Newtonsoft.Json。
  4. 如果找到多个具有不同版本的参考元素,请删除除最新版本外的所有
  5. 保存文件
  6. 再次右键单击您的项目,然后选择“重新加载项目”

错误应该消失了。