c# - .NET — 管理不同版本的 NuGet 包的常见依赖项
问题描述
我有两个解决方案:SolutionA 和 SolutionB(在不同的存储库中)。两个解决方案都依赖于 Package1,但 SolutionA 下的项目利用此包的 1.0.0 版本,但 SolutionB 下的项目利用 2.0.0。
现在,需要在 SolutionB 中打包和发布库的 NuGet 包,该包将在 SolutionA 中的库中使用。
正如预期的那样,我在尝试此操作时看到了降级错误。所以,我决定将SolutionB中Package1的版本降级为1.0.0版本。代码仍然可以编译;在运行时没有不良的副作用。然后,我打包并发布并尝试在 SolutionA编辑中重新使用:此时,我尝试重新安装最新版本的 SolutionB NuGet 包,方法是完全卸载它,然后重新安装并直接在 NuGet 包管理器中降级(w/e它被称为..) 在VS中
在这一点上,我仍然看到降级错误,理由是 SolutionB 依赖项正在利用更高版本,但实际上,它不再是。为什么?
哈!
编辑:添加错误以供参考。我选择 Newtonsoft.Json 来演示。这很容易用任何具有多个版本的 NuGet 包来重现
错误 NU1605 检测到包降级:Newtonsoft.Json 从 11.0.2 到 9.0.1。直接从项目中引用包以选择不同的版本。TestProjectA -> TestProjectB 1.0.0 -> Newtonsoft.Json (>= 11.0.2) TestProjectA -> Newtonsoft.Json (>= 9.0.1)
TestProjectA 的 NuGet 依赖项:
TestProjectB 的 NuGet 依赖项:
解决方案
确保在更改 TestProjectB 时增加 NuGet 包版本或清除本地 NuGet 缓存 ( dotnet nuget locals all --clear
)。
推荐阅读
- javascript - 为什么将 display flex 添加到父级不允许我设置 flex
- jasper-reports - 更改报告以使用不同的系统字体
- replication - 无法在 vm 上设置多个 symmetricDS 实例
- jquery - Jquery slick Image 没有正确渲染
- python - tkinter 条目小部件的验证
- mongodb - 我应该为我的数据库制作多少分片
- mysql - 哪个更好,删除和重新创建 FK 约束或禁用和启用 FK 检查?
- java - 更改 Java soap 服务结果元素名称
- java - Java lambda 参数:如何防止使用外部范围的参数?
- reactjs - 在 ES6 和 React 中随时间返回多个值