无法加载文件或程序集'Newtonsoft.Json,Version = 7.0.0.0

问题描述 投票:17回答:7

我正面临下面的错误

无法加载文件或程序集“Newtonsoft.Json,Version = 7.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

我可以在Web.config中看到下面的内容

   <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
      </dependentAssembly>

所以我改成了

   <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.1.0" />
      </dependentAssembly>

在packeges.config中,我可以看到以下条目

但我仍面临同样的问题。请帮忙

c# asp.net asp.net-mvc json.net nuget
7个回答
39
投票

很多事情都可能出错,而且这条错误信息告诉你什么。

但我仍面临同样的问题。

也许最简单的方法是尝试重新安装软件包。

转到工具> NuGet包管理器并选择包管理器控制台。执行以下两个命令:

uninstall-package newtonsoft.json -force
install-package newtonsoft.json

如果在执行此操作后仍然出现错误,那么最终对我有用的是我从.config文件中删除了Json.Net的部分。如果不存在,重新安装会将其恢复,显然您需要将其删除。直到包装本身有一个正常的解决方案,我担心这个手动步骤是必须的。在包管理器控制台中再次执行:

Update-Package –reinstall Newtonsoft.Json

另外,请查看解决方案中项目的.Net version

这是卸载项目的Microsoft solution


0
投票

大多数情况下发生此错误是因为不同的程序集依赖于某些其他程序集的特定版本。

最简单的解决方法是使用nuget包管理器更新所有依赖于Newtonsoft.Json的包。

它会自动设置项目中的所有配置文件。


0
投票

我得到了同样的错误,并通过对我的解决方案进行“清理”来修复它。我在UWP应用程序中使用Newtonsoft.Json。


0
投票

谢谢@ekostadinov。我能够使用@ekostadinov的解决方案。在我的例子中,默认的Web MVC模板具有NewtonSoft JSON版本6.我添加了一个类库,并且我从Nuget包管理器安装了NewtonSoft JSON版本9。

我尝试从我的Web项目中删除引用,包config和依赖项,但我仍然收到错误。现在,我收到错误消息说无法找到Newtonsoft JSON版本6.最初我收到错误消息说无法找到Newtonsoft JSON版本9。

然后我跟着@ekostadinov步骤。

uninstall-package newtonsoft.json -force
install-package newtonsoft.json

我收到了关于包管理器控制台中的依赖关系的警告,该控制台提到了与Web.Grease dll版本的依赖关系。但无论如何,它是成功的。

为了仔细检查,我运行了上面帖子中提到的最后一个命令

Update-Package –reinstall Newtonsoft.Json

它也没有任何警告。

现在,我可以在所有项目中使用版本9。


0
投票

如果package.config包含2个具有不同版本的相同软件包名称,则会发生这种情况。

例如,

<package id="System.Spatial" version="5.6.2" targetFramework="net45" />
<package id="System.Spatial" version="5.6.4" targetFramework="net45" />

谢谢。


0
投票

我有同样的问题,卸载和重新安装没有帮助。当时我正在尝试安装Newtonsoft.Json的最新版本(10.0.3)。我最终安装了7.0.1版本,然后运行了另一篇文章,建议将.dll复制到:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE。我做了什么。

再次启动安装REST API进程,然后收到不同的错误。尝试安装Microsoft.Rest.ClientRuntime 2.3.2时失败。为此,我刚进入NuGet并将其安装到我安装了REST API的项目中。

再次启动REST API安装,这次安装。

哦,如果它可以帮助任何人进行搜索,我在Windows Server 2012R2上使用VS2015进行Azure Immersion 02-API应用程序教程。


0
投票

我遇到过同样的问题。我按照ekostadinov的强制卸载/重新安装步骤,但需要添加一个额外的步骤:

我正在升级我的Framework for Framework 4.5.2。我的旧Web.Config文件在配置标记中有一个命名空间。

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

我更新到:

<configuration>

然后bindingRedirect应该适用于您使用的任何版本的NewtonSoft:

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


0
投票

好吧,就我而言,解决方案中有多个项目,每个项目都使用不同版本的NewtonSoft.json。我必须继续改变每个项目的package.config中的版本以匹配最新版本(嗯,它可能是任何版本只是它应该在整个项目中相同)。一旦所有package.config指向同一版本,我所要做的就是

Update-Package –reinstall Newtonsoft.Json

现在,请注意我还必须在其中一个项目中手动更改web.config程序集条目的版本。但那确实起了作用。

© www.soinside.com 2019 - 2024. All rights reserved.