首页 > 解决方案 > 为什么 .net 显示相同 nuget 包的版本冲突,这是 3rd 方库/包的内部依赖项?

问题描述

Newtonsoft.json 库的版本冲突。

重现问题的步骤:

  1. 创建2个.net c#项目
  2. 项目 1 包括带有某种方法的 IdentityModel
  3. 项目 2 包括 Microsoft.AspNet.WebApi.OwinSelfHost 和一些方法
  4. 打包它们并创建 nuget 包并在本地发布(将创建 2 个包)
  5. 现在创建一个测试项目并在其中安装两个 nuget 包。
  6. 从那些已安装的包中调用该方法。您将收到有关 Newtonsoft.json 的冲突错误

我有两个基于 Kafka 和 REST 开发的自定义插件。为了完成插件,我使用 3rd 方库作为依赖项的一部分。依赖在内部使用带有特定版本的 Newtonsoft.Json 包。

用于开发 kafka 插件的软件包 用于开发 kafka 插件的软件包

用于开发 REST 插件的包 用于开发 REST 插件的包

.net 不应显示错误

System.Reflection.TargetInvocationException :调用目标引发了异常。----> System.IO.FileLoadException:无法加载文件或程序集“Newtonsoft.Json,版本=6.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

作为 3rd 方库应该根据他们的版本引用他们的包。对我来说,如果我导航到

%USERPROFILE%.nuget\packages

位置我可以看到版本newtonsoft.json 的版本图,第 3 方库应该在运行时使用它们。版本 6.0.4 和 11.0.2 应在其运行时加载。

标签: c#.netjson.netnuget-package

解决方案


请使用Update-Package命令更新所有项目中的所有包


推荐阅读