【问题标题】:Could not load file or assembly 'Newtonsoft.Json, Version=10.0.0.0' - However binary exists in bin folder无法加载文件或程序集'Newtonsoft.Json,版本 = 10.0.0.0' - 但是 bin 文件夹中存在二进制文件
【发布时间】:2017-10-08 02:26:25
【问题描述】:

我在这里尝试做一些非常简单的事情,但我已经坚持了几个小时。我觉得我几乎用尽了所有选项。

我要做的就是: JsonConvert.SerializeObject(model)

但是,产生的错误是:

抛出异常:mscorlib.dll 中的“System.IO.FileLoadException”

附加信息:无法加载文件或程序集“Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=982hs0cm1kd”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

但是,在我的项目中,我引用的是 10.0.0.0 版本。更具体地说,10.0.2.0。当我检查项目的 bin 文件夹时,我可以验证 10.0.2.0 dll 是否存在。在packages.config中,我有<package id="Newtonsoft.Json" version="10.0.2" targetFramework="net452" />

我尝试过的事情:

  1. 从项目中手动删除 bin/obj 文件夹并重建
  2. 手动修改 Web.Config 文件以确保绑定重定向中的版本正确。
  3. 将参考属性“特定版本”更新为 False
  4. 手动删除C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root中的所有文件

我真的被困在这里,我可以看到这是一个常见问题,因为我找到了很多不同的方法来解决它,但到目前为止都没有奏效。

有什么想法吗?

【问题讨论】:

  • “但是,在我的项目中,我引用的是版本 10.0.0.0。更具体地说,是 10.0.2.0。”那不是“更具体” - 那是“不同”。听起来 something 仍然在期待 10.0.0.0,并且因为找到 10.0.2.0 而失败。你能把你的程序集绑定重定向放在问题中吗?
  • 闻起来像 DLL 地狱问题。您是否尝试过确保所有代码都引用同一个库,并且您没有在引用的代码中使用其他版本?
  • 我遇到了这个问题,我不得不在 npm 控制台 update-package Newtonsoft.Json -reinstall 中运行这个命令
  • 在 VS 中,在项目引用中 Newtonsoft.Json 程序集的属性窗口中,显示了编译器正在使用的 DLL 的路径。如果将此路径中的 DLL 复制到 bin 文件夹或发布可执行文件的任何位置(覆盖可能已经存在的任何 DLL),会发生什么情况。那么错误是否仍然出现?
  • 您似乎忘记添加在调查程序集加载异常时收集的融合日志信息 - 请确保在 edit 发布并包含该日志。

标签: c# .net json reference dependencies


【解决方案1】:

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

source

【讨论】:

    【解决方案2】:

    刚刚遇到了类似的问题。我的网站和一个引用的项目(我假设组装相同)都需要 Newtonsoft.Json,但它们的版本略有不同。

    似乎该网站胜出,因此该网站安装了该版本,而引用的程序集未能加载“它的”版本。

    确保所有项目都具有相同的版本(管理 NuGet 包以获取解决方案)并且可以正常工作。

    【讨论】:

      猜你喜欢
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2015-12-23
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多