【问题标题】:Assembly looking for wrong version of Newtonsoft.Json.dll寻找错误版本的 Newtonsoft.Json.dll 的程序集
【发布时间】:2016-12-05 16:54:54
【问题描述】:

我的项目正在使用 Newtonsoft.Json.dll。 我已将 dll 添加为对我的项目的引用,并且我使用的是 8.0.2 版

一切都可以在我的电脑上运行,但是当我将所有内容连同 Newtonsoft.Json.dll 一起转移到新电脑时,我得到了错误

无法加载文件或程序集'Newtonsoft.Json,版本=4.0.3.0, Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed' 或其其中之一 依赖关系。系统找不到指定的文件。

我没有在任何地方引用该版本,并且我的 app.config 中没有任何内容指定这一点。

【问题讨论】:

  • 该解决方案有多少个项目,其中任何一个都依赖JSON而不是启动项目

标签: c# .net reference json.net assemblies


【解决方案1】:

上一个答案将帮助您找到问题所在。当某些引用的库明确指定它支持的库版本时,就会发生这种情况。幸运的是,您可以在 app.config 中覆盖绑定(参见下面的示例):

<configuration>
  <!--YOUR 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-8.0.0.0" newVersion="8.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

【讨论】:

    【解决方案2】:

    我会在启动项目的 bin 目录中检查 Newtonsoft.Json 的版本。如果有 Newtonsoft.Json 并且它是您期望的版本,那么您可以使用 Fuslogvw (https://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.110).aspx) 查看加载程序试图从哪里获取 4.0.3.0 版本。这可能会让您深入了解为什么运行时正在寻找不同的版本。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 2013-06-26
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      相关资源
      最近更新 更多