首页 > 解决方案 > .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 依赖项:

在此处输入图像描述

标签: c#.netnugetnuget-packagedotnet-cli

解决方案


确保在更改 TestProjectB 时增加 NuGet 包版本或清除本地 NuGet 缓存 ( dotnet nuget locals all --clear)。


推荐阅读