无法加载文件或程序集'Newtonsoft.Json,版本 = 10.0.0.0' - 但是 bin 文件夹中存在二进制文件
Posted
技术标签:
【中文标题】无法加载文件或程序集\'Newtonsoft.Json,版本 = 10.0.0.0\' - 但是 bin 文件夹中存在二进制文件【英文标题】: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" />
我尝试过的事情:
-
从项目中手动删除 bin/obj 文件夹并重建
手动修改 Web.Config 文件以确保绑定重定向中的版本正确。
将参考属性“特定版本”更新为 False
手动删除
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 发布并包含该日志。 【参考方案1】:在包管理器控制台中执行:Update-Package –reinstall Newtonsoft.Json。
source
【讨论】:
【参考方案2】:刚刚遇到了类似的问题。我的网站和一个引用的项目(我假设组装相同)都需要 Newtonsoft.Json,但它们的版本略有不同。
似乎该网站胜出,因此该网站安装了该版本,而引用的程序集未能加载“它的”版本。
确保所有项目都具有相同的版本(管理 NuGet 包以获取解决方案)并且可以正常工作。
【讨论】:
以上是关于无法加载文件或程序集'Newtonsoft.Json,版本 = 10.0.0.0' - 但是 bin 文件夹中存在二进制文件的主要内容,如果未能解决你的问题,请参考以下文章
无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0
无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配
无法加载文件或程序集'netstandard,版本 = 2.0.0.0