无法加载文件或程序集“Newtonsoft.Json,Version=10.0.0.0”- 但二进制文件存在于 bin 文件夹中。

11
我在尝试做一些非常简单的事情,但是已经卡了几个小时了。我感觉我已经用尽了几乎所有的选择。我只是想做以下操作:JsonConvert.SerializeObject(model)。然而,结果出现了错误:“文件加载异常”,提示信息为“无法加载文件或程序集“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. 更新引用属性“Specific Version”的值为False。
  4. 手动删除C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root目录下的所有文件。
我真的被卡住了,我看到这是一个普遍的问题,因为我找到了很多不同的解决方法,但迄今为止都没有起作用。您有任何想法吗?

5
然而,在我的项目中,我正在引用版本号为10.0.0.0的内容。更具体地说,是10.0.2.0。这并不是“更具体”,而是“不同”。听起来好像仍然有某些东西期望找到10.0.0.0,但因为找到了10.0.2.0而失败了。请问你能把你的程序集绑定重定向放在问题里吗? - Jon Skeet
2
感觉像是DLL地狱问题。你尝试过确保所有代码引用相同的库,而不是在引用的代码中使用另一个版本吗? - daveBM
我遇到了这个问题,不得不在npm控制台中运行此命令update-package Newtonsoft.Json -reinstall。 - nobody
1
看起来您忘记添加融合日志信息,这些信息是您在调查程序集加载异常时收集的 - 请确保[编辑]帖子并包含该日志。 - Alexei Levenkov
请添加一个答案,列出您所采取的步骤,以帮助其他可能遇到相同问题的人。 - Marshall
显示剩余7条评论
2个回答

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

2

我遇到了类似的问题。我的网站和一个被引用的项目(我认为同样适用于程序集)都需要Newtonsoft.Json,但它们的版本略有不同。

似乎是网站获胜了,因此该网站安装了该版本,而引用的程序集无法加载“它”的版本。

确保所有项目都具有相同的版本(使用“解决方案的管理NuGet包”)即可解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接