c# - 为什么 .net 显示相同 nuget 包的版本冲突,这是 3rd 方库/包的内部依赖项?
问题描述
Newtonsoft.json 库的版本冲突。
重现问题的步骤:
- 创建2个.net c#项目
- 项目 1 包括带有某种方法的 IdentityModel
- 项目 2 包括 Microsoft.AspNet.WebApi.OwinSelfHost 和一些方法
- 打包它们并创建 nuget 包并在本地发布(将创建 2 个包)
- 现在创建一个测试项目并在其中安装两个 nuget 包。
- 从那些已安装的包中调用该方法。您将收到有关 Newtonsoft.json 的冲突错误
我有两个基于 Kafka 和 REST 开发的自定义插件。为了完成插件,我使用 3rd 方库作为依赖项的一部分。依赖在内部使用带有特定版本的 Newtonsoft.Json 包。
用于开发 kafka 插件的软件包
用于开发 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 应在其运行时加载。
解决方案
请使用Update-Package命令更新所有项目中的所有包
推荐阅读
- xml - 使用 jq/xq 提取包含具有特定值的标签的元素
- request - 是否有可能在赛普拉斯中阻止网络请求?
- php - .htaccess 的重定向问题,删除 .php 并添加斜杠
- xcode - 如何在 Xcode 中设置 Flutter 构建选项
- javascript - 如何在 javascript 中存储信息表并检索相同的数据进行验证?
- python - 在 Javascript 网页中加载在 Colab 中创建的对象识别模型
- python - 如何更改数据框中的行顺序
- laravel - Laravel Route:dispatch 使用 EncryptCookie 创建新会话
- python - 在 python 中向第三方类添加属性的建议方法
- r - 用于诊断的正则表达式