无法加载文件或程序集“Newtonsoft.Json”或其中一个依赖项

时间:2015-09-27 10:03:41

标签: c# .net json asp.net-mvc json.net

首先,它不仅仅是重复。以下问题的答案都不适用于我。

http://goo.gl/tS40cn
http://goo.gl/pH6v2T

我刚刚使用Nuget Package Manager更新了所有软件包,我开始收到此错误。

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

我的包裹配置:

<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />

Web.config包含这段代码:

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

参考Newtonsoft.Json

的属性

enter image description here

根据类似问题的答案,我尝试了以下方法:

  • 使用Update-Package –reinstall Newtonsoft.Json
  • 重新安装软件包
  • dependentAssembly 移除Web.config配置
  • Newtonsoft.Json中将newVersion更改为6.0.0.07.0.0.0。这样做会产生新的错误。
  • 还尝试dependentAssembly。它将Get-Project -All | Add-BindingRedirect的{​​{1}}更改为newVersion。但问题仍未得到解决。

请帮我解决这个问题。

9 个答案:

答案 0 :(得分:13)

我知道这是旧的,但我遇到了同样的问题。我的问题是解决方案中的多个项目使用了Newtonsoft.Json,但有些项目的版本不同。我将所有这些更新到最新版本(我打字时为9.0.1),问题就消失了。

无论如何......如果有人还在处理这个问题,请确保在解决方案的每个项目中更新软件包。

HTH

答案 1 :(得分:2)

在我的MVC项目中添加Newtonsoft引用为我解决了这个问题。

答案 2 :(得分:2)

在尝试了上述大部分内容(以及其他一些帖子)之后,我从包管理器中卸载了受影响项目的所有以下内容:

Microsoft.AspNet.WebApi
Microsoft.AspNet.Client
Microsoft.AspNet.Core
Microsoft.AspNet.WebHost
Newtonsoft.Json

然后重新安装了Microsoft.AspNet.WebApi,它自动安装.Client,。Core,。WebHost,.Json。

答案 3 :(得分:1)

运行Update-Package Newtonsoft.Json -Reinstall

它应该删除对4.5版本的引用,并重新安装package.config中引用的较新版本。它还将更新绑定重定向,然后应如下所示:

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

由于您在问题中说过您已经尝试过此操作,因此您可能希望首先尝试手动删除现有参考。您可能还希望确保文件在磁盘上不是只读的,或者由源控件锁定。

答案 4 :(得分:0)

在包管理器控制台中运行此命令:

PM> Install-Package Newtonsoft.Json -Version 6.0.1

答案 5 :(得分:0)

  1. 在VS解决方案资源管理器中,删除Newtonsoft.Json参考。
  2. 在Newtonsoft二进制文件here
  3. 下载6.0二进制文件
  4. 提取文件
  5. 手动添加Newtonsoft库。在Visual Studio中,右键单击“参考”并选择“添加引用”
  6. 点击浏览
  7. 导航到Net45下的解压缩文件,然后选择Newtonsoft.Json.dll
  8. 如果不起作用,请尝试使用Net40,而不是再次完成整个过程。

答案 6 :(得分:0)

在我的情况下,以下代码出现在我的本地调试版本的解决方案中,但不在我的实时服务器版本的代码中。将代码添加到我的服务器Web.config文件修复了问题。

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

答案 7 :(得分:0)

将配置更改为如下所述:      

答案 8 :(得分:0)

在项目参考中检查“ Newtonsoft.Json”版本。在Web配置中添加该版本。它会工作。 例如: 您的Webconfig如下所示:

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

如果“参考”中的版本为“ 9.0.0.0” 更改为此:

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