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

Newtonsoft.Json version 8.0.2 Could not load file or assembly Error

我正在尝试在 Web API 解决方案中解析 Class 库中的 JSON 文件。它是一个常规的 C# Class 库,而不是便携式库。

我已经尝试了每一个答案mentioned here,但还是不行!我一直收到同样的错误:

Could not load file or assembly 'Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from 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;
}

我正在修复我的 Windows Phone 8 个解决方案之一中的一些旧代码,并考虑更新 NuGet 包,但遇到了同样的问题。

StivOstenberg here 的评论帮助我解决了这个问题。

这是我做的:

  1. 删除了 NuGet 包。只需单击 NuGet 管理器中的 'Uninstall'。 确保分别从解决方案中的每个项目中删除它
  2. 清洁解决方案。重建解决方案。
  3. 现在,从整个解决方案中删除 using 语句!可以通过在 'Entire Solution'.
  4. 上使用 Newtonsoft.Json 快速查找和替换 来完成
  5. 重复步骤 2。(忽略错误)
  6. 从 NuGet 管理器再次添加包并构建 (Ctrl+Shift+B)。
  7. 最后(几乎),对于显示的每个错误,转到特定页面并再次添加引用
  8. 重复步骤 2 和 运行。

可能有一些多余的步骤,但这正是我所做的,并且奏效了。希望对你也有帮助。

确保父程序集中没有冲突的 Newtonsoft 版本!

在子程序集中我想使用 Newtonsoft.Json.8.0.3.

StartUp 项目是一个 MVC5 网络应用程序。在那里,我使用了 BundleTransformer.Less.X.X.X,它依赖于 Newtonsoft.Json.8.0.2。 升级 NewtonSoft.Json 到 8.0.3(现在都是同一个版本)帮我解决了。