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

时间:2017-10-13 14:00:08

标签: c# winforms json.net signalr

当我调试时,我在下面遇到了一个例外。

var connection = new HubConnection("http://localhost:8080/");

Exception:
Could not load file or assembly 'Newtonsoft.Json, Version=6.0.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)

我创建了一个文件夹,我转储了我的serverHub.exe(控制台应用程序)和一个winforms的客户端模块。在客户端,当我尝试调用上面提到的步骤时,我得到了例外。

首先我安装了版本= 6.0.0.0的Newtonsoft.Json,之后我将其更新为version = 9.0.1。现在我将所需的dll (Microsoft.Asp.Net.Client.dll, Newtonsoft.Json.dll along with other dll's required)复制到我创建的公共文件夹中。这是我开始面对异常的时候。

现在我项目中的引用(Newtonsoft.Json.dll, Microsoft.Asp.Net.Client.dll)指的是我新创建的文件夹,我从“packages”位置转储了复制的dll。

我再次删除了这些引用并从包管理器下载了Nuget包(Microsoft.Asp.Net.Client.dll-version:2.2.1& Newtonsoft.Json.dll-9.0.1)。 现在引用的引用来自package位置。现在我尝试构建我的应用程序,现在它工作正常。

的App.config(客户端的):

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
      </dependentAssembly>

    </assemblyBinding>
  </runtime>
</configuration>

的App.config(服务器):

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
  </dependentAssembly>
</assemblyBinding>

如果我开始引用一个不同的位置,我将复制安装的所有dll而不是解决方案目录下的默认“Packages”位置,我面临上述异常。我们不能让dll引用一个不同的位置而不是默认的“包”位置?如果是,请帮助我做错了。

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

我会尝试将绑定重定向更改为 &lt; bindingRedirect oldVersion =“0.0.0.0-9.0.1.0”newVersion =“9.0.1.0”/&gt;

如果这样做没有帮助,请尝试通过此工具检查运行可执行文件的新位置,以查看实际遗漏的内容: https://stackoverflow.com/a/44251000/2819746