无法加载文件或程序集'Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'

use*_*755 224 asp.net json.net

我收到了错误

System.IO.FileLoadException:无法加载文件或程序集"Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

我的CI构建

我试过的解决方案

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
        culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

它也没用

bob*_*h75 233

在包管理器控制台中执行:Update-Package –reinstall Newtonsoft.Json.

UPDATE

我最初将此作为评论发布,但正如@OwenBlacker建议我将它放在这里:

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

注意:在执行此操作之前,请阅读以下注释.

根据René在下面的评论BE AWARE,答案中发布的命令将在您的解决方案中的每个项目中重新安装软件包.因此,如果您在多个项目中使用Newtonsoft.Json包并且可能使用不同的版本,则执行上述命令可能会产生不良后果.

  • _BE AWARE_答案中发布的命令将在您的解决方案中的_every_项目中重新安装软件包.因此,如果您在多个项目中使用Newtonsoft.Json包并且可能使用不同的版本,则执行上述命令可能会产生不良后果. (41认同)
  • 为了每个人都读到这个:我已经做到了但仍然有错误.然后我以某种方式解决了它:令人惊讶的是,我必须从我的`.config`文件中_delete_ Json.Net的`<dependentAssembly>`部分.如果不存在,重新安装会将其恢复,显然您需要将其删除.直到包装本身有一个正常的解决方案,我担心这个手动步骤是必须的. (7认同)

小智 119

对于遇到Newtonsoft.Json v4.5版本问题的每个人,请尝试在web.config或app.config中使用它:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
           <assemblyIdentity name="Newtonsoft.Json"
               publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
           <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
       </dependentAssembly>
    </assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)

重要信息:检查configuration配置文件的标记是否没有命名空间属性(如/sf/answers/840785501/中所述).否则,assemblyBinding标签将被忽略.

  • 对我来说,清理后手动删除bin文件夹的内容(没有清空)在我应用这个答案后就可以了. (3认同)
  • 关于命名空间的说明...我可以拥抱你。我为此花了几个小时,却不知道绑定重定向因此而被忽略了。 (2认同)

Kad*_*Can 41

关键是在配置文件中引用正确的版本.

脚步;

1-查看项目引用属性中Newtonsoft.Json.dll的版本,包文件夹中的版本是什么(例如我的版本是7.0.1,参考版本是7.0.0.0)

2-看看项目在异常中对你的期望(我的是6.0.0.0)

3-将依赖程序集添加到配置文件中,因为它应该是..

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"  publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)


Kar*_*und 24

我对这里提出的任何解决方案都没有运气(卸载,重新安装,删除引用,创建bindingRedirects等).我不得不回到旧版本的Newtonsoft.版本5.0.6之前一直在工作,所以我尝试了那个.我不得不在Package Console中输入这两个命令:

uninstall-package newtonsoft.json -force

install-package newtonsoft.json -version "5.0.6"

-force需要第一个命令中的选项才能强制卸载.与其他程序集的依赖关系会阻止没有它的卸载.


MiM*_*iMo 22

我修复了将此绑定重定向添加到我的.config文件的问题:

<runtime>
    . . . 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
                culture="neutral" />
            <bindingRedirect oldVersion="4.5.0.0" newVersion="6.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)

错误消息抱怨没有找到版本4.5.0.0,当前版本的Newtonsoft.Json是6.0.0.0所以重定向应该从4.5到6.0,而不是反之亦然


Bru*_*oLM 21

我认为你指向错误的目标,将其更改为4.5而不是6.0

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
        culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

这应该工作.


eko*_*nov 19

我花了几天时间试图解决这个令人沮丧的问题.我已经尝试了几乎所有可以在网上找到的东西.最后,我发现在一个解决方案中,不同的目标.Net项目版本(4.5和4.5.1)可能会导致此错误(就像我的情况一样).下面的步骤对我来说是固定的:

  1. 仔细检查解决方案中每个项目的.Net版本.只需右键单击项目即可转到Properties.

在此输入图像描述

  1. 如果可能,为所有项目设置相同的.Net版本.如果不是至少尝试更改启动项目(对我来说这是导致问题的那个).

  2. Newtonsoft.Json从解决方案中删除所有包.

    uninstall-package newtonsoft.json -force

  3. 更新所有文件中的所有Newtonsoft.Json版本packages.config,如下所示

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

  4. Newtonsoft.Json从"程序包管理器控制台" 重新安装:

    install-package newtonsoft.json

  5. 重建解决方案

(可选)7.如果更改了"启动"项目,请再次返回


小智 11

uninstall-package newtonsoft.json -force
install-package newtonsoft.json
Run Code Online (Sandbox Code Playgroud)

对我来说诀窍:)


hel*_*elb 10

从项目引用中删除Newtonsoft.Json程序集并再次添加它.您可能意外删除或替换了DLL.


msc*_*aig 9

我正在编写一个WebApi REST服务客户端,所以对我来说,这个错误是由于我应该通过NuGet添加包来通过Add Reference手动添加引用System.Net.HttpSystem.Net.Http.Formatting程序集引起的.另见另一个问题的答案.Microsoft.AspNet.WebApi.Client


小智 9

如果你在同一个解决方案中使用多个项目,另一个检查的库是所有项目都有相同版本的Newtonsoft.Json


小智 8

您的解决方案中有2个不同版本的JSON.NET库.要解决此问题,您应该将它们升级到最新版本.跟着这些步骤:

1-Open解决方案资源管理器2-右键单击解决方案名称3 - 选择Manage Nuget Packages for Solution 4 - 从菜单5中选择更新 - 更新JSON.NET包

这将解决您的问题.

链接: 无法加载文件或程序集'Newtonsoft.Json,Version = 7.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其依赖项之一


Mig*_*elo 7

将正确的版本部署到CI计算机

这告诉您程序集加载程序找到了不同版本的Newtonsoft.Json程序集,它与您在项目中创建的引用不匹配.要正确加载程序集,必须将程序集与已编译的代码并排部署,或者在目标计算机中安装正确版本的程序集(即在GAC中).

备选方案:确保配置在正确的文件中

如果要保留当前解决方案并加载具有不同版本的程序集,请确保您发布的配置位于正确的.config文件中.请记住,没有xpto.dll.config,应用程序加载的DLL总是使用正在运行的应用程序的配置文件.


Dav*_*tte 6

通常添加绑定重定向应解决此问题,但它不适合我.几个小时后我的头靠在墙上,我意识到有一个xmlns属性导致我的web.config出现问题.从Web.config中的配置节点中删除xmlns属性后,绑定重定向按预期工作.

http://www.davepaquette.com/archive/2014/10/02/could-not-load-file-or-assembly-newtonsoft-json-version4-5-0-0.aspx


小智 5

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"
        publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>
Run Code Online (Sandbox Code Playgroud)

对我有用....只需将您使用的版本放在newVersion即(newVersion ="7.0.0.0")


Trư*_*ánh 5

关闭解决方案

打开packages.config*.csproj使用文本编辑器删除任何行都有Newtonsoft.Json

例如:
<Reference Include="Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath> <Private>True</Private> </Reference>

要么 <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40" />

再次打开解决方案并重新安装Newtonsoft.Json Install-Package Newtonsoft.Json

它对我有用.


Bha*_*rat 5

我遇到了同样的错误,并通过添加以下代码在生产中解决了错误。

答案为时已晚,但可能会对某人有所帮助。

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

344863 次

最近记录:

5 年,9 月 前