Newtonsoft.Json版本8.0.2无法加载文件或程序集错误。

5
我正在尝试在Web API解决方案中的Class Library中解析JSON文件。这是一个普通的C# Class Library,而不是Portable类型。
我已经尝试了这里提到的每个答案,但仍然无法解决问题!我一直收到同样的错误消息:
“无法加载文件或程序集'Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'或其某个依赖项。找到的程序集清单定义与程序集引用不匹配。(HRESULT异常: 0x80131040)":"Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”
以下是代码:
public IList<BranchRM> AllBranches()
{
    var result = new List<BranchRM>();
    var dataSourcePath = AppDomain.CurrentDomain.BaseDirectory + "Data/branches.json";
    var dataAsText = File.ReadAllText(dataSourcePath);
    if (string.IsNullOrEmpty(dataAsText)) return result;
    var branchList = JsonConvert.DeserializeObject<List<Branch>>(dataAsText);
    result = AutoMapper.Mapper.Map<List<BranchRM>>(branchList);
    return result;
}

谢谢@tchelidze,我刚刚尝试了,但仍然出现相同的错误:( - J86
最近更新了 Newtonsoft.Json 包吗?可能它已经被缓存在 GAC 中,而 VS 尝试从 GAC 加载,但由于版本不匹配(GAC 存储的是比您当前引用的旧版本),因此会出现以下错误。尝试在 GAC 中查找 Newtonsoft.Json 并将其删除。 - tchelidze
请尝试检查 GAC 中的 Newtonsoft.Json,版本号为 8.0.0.0。 - Michael
我刚刚查看了GAC文件夹(通过Agent Ransack),但是没有发现任何带有Newtonsoft一词的文件 :( - J86
嘿@Ciwan...你解决了这个问题吗? - Amit Tyagi
显示剩余4条评论
2个回答

5
我正在修复Windows Phone 8解决方案中的一些旧代码,并想更新NuGet包,但遇到了相同的问题。StivOstenberg在这里的评论帮助了我解决这个问题。
这是我所做的:
1. 删除NuGet包。只需从NuGet管理器中单击“卸载”即可。请确保从解决方案中的每个项目中分别删除它。 2. 清理解决方案。重建解决方案。 3. 现在,从整个解决方案中删除使用语句!可以通过在“整个解决方案”上进行快速查找和替换using Newtonsoft.Json来完成。 4. 重复步骤2。(忽略错误) 5. 从NuGet管理器中再次添加包并构建(Ctrl + Shift + B)。 6. 最后(几乎完成),针对显示的每个错误,转到特定页面并重新添加引用。 7. 重复步骤2并运行。
可能有一些多余的步骤,但这正是我所做的,而且它起作用了。希望它也能帮助您。

1
请确保父程序集中没有与Newtonsoft冲突的版本!
在子程序集中,我想使用Newtonsoft.Json.8.0.3。
启动项目是一个MVC5 Web应用程序。我在那里使用BundleTransformer.Less.X.X.X,它依赖于Newtonsoft.Json.8.0.2。将NewtonSoft.Json升级到8.0.3(现在全部是相同的版本)解决了我的问题。

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