为什么.net会显示相同的nuget软件包的版本冲突,而这是第三方库/软件包的内部依赖项?

时间:2019-04-03 09:21:33

标签: c# .net json.net nuget-package

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之上开发了两个自定义插件。为了完整填充插件,我使用了第三方库作为依赖项的一部分。依赖关系在内部使用Newtonsoft.Json软件包及其特定版本。

用于开发kafka插件的软件包 package use for developing kafka plugin

用于开发REST插件的软件包 package use for developing REST plugin

.net不应显示错误

  

System.Reflection.TargetInvocationException:异常已发生   由调用目标抛出。 ---->   System.IO.FileLoadException:无法加载文件或程序集   'Newtonsoft.Json,版本= 6.0.0.0,文化=中性,   PublicKeyToken = 30ad4fe6b2a6aeed”或其依赖项之一。的   找到的程序集的清单定义与程序集不匹配   参考。 (来自HRESULT的异常:0x80131040)

第3方库应根据其版本引用其软件包。对我来说,如果我导航到

  

%USERPROFILE%.nuget \ packages

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

1 个答案:

答案 0 :(得分:0)

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