如何修复 json.net (Newtonsoft.Json) 运行时文件加载异常

How to fix json.net (Newtonsoft.Json) runtime file load exception

我每次 运行 我的项目时都会收到以下异常:

An exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll but was not handled in user code Additional information: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

我尝试了几乎所有可以在网上找到的解决方案。

我的packages.config文件:

<package id="Newtonsoft.Json" version="8.0.2" targetFramework="net451" />

and this in web.config file:
 <assemblyIdentity name="Newtonsoft.Json" PublicKeyToken="30ad4fe6b2a6aeed"  />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
      </dependentAssembly>

我什至使用以下命令 update/reinstall json.net:

update-package Newtonsoft.Json -reinstall
update-package Newtonsoft.Json

我还能尝试什么?

更改您的绑定重定向 newVersion 和 oldVersion 以匹配您尝试使用的 Json.net 版本:

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" PublicKeyToken="30ad4fe6b2a6aeed"  />
    <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
  </dependentAssembly>

4.5是框架版本,不是Json.net

的版本

谢谢大家,我找到问题了。当我把它放在 web.config.

中时,我没有添加 culture="neutral"
<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" PublicKeyToken="30ad4fe6b2a6aeed"  />
    <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
  </dependentAssembly>

我遇到了这个问题,经过仔细检查,我意识到 Newtonsoft 以某种方式被添加了两次

<dependentAssembly>..</dependentAssembly>

在我的 web.config 文件中。我有 8.0 和 9.0 版本的条目。我相信第二个条目是在我从 8.0 更新到 9.0 时创建的。已自动创建新条目,但未删除旧条目。

我刚刚为我的项目安装了 Nuget 包 'Newtonsoft.json',但遇到了同样的问题。它得到解决