.NET — 管理 NuGet 包与不同版本的共同依赖

.NET — Managing NuGet packages’ common dependencies with different versions

我有两个解决方案:SolutionA 和 SolutionB(在不同的存储库中)。两种解决方案都依赖于 Package1,但 SolutionA 下的项目利用此包的 1.0.0 版本,但 SolutionB 下的项目利用 2.0.0.

现在需要打包发布一个SolutionB中的库的NuGet包,在SolutionA中的库中使用。

不出所料,我在尝试此操作时看到了降级错误。所以,我决定将SolutionB中Package1的版本降级到1.0.0版本。代码仍然可以编译;在 运行 时间内没有不良副作用。然后,我打包并发布并尝试在 SolutionA 中重新使用 编辑:此时,我尝试重新安装最新版本的 SolutionB NuGet 包,方法是完全卸载它然后重新安装并直接在 NuGet 包中降级它VS

中的经理(w/e 它被称为..)

此时,我仍然看到一个降级错误,指出 SolutionB 依赖项正在利用更高版本,但实际上,它不再是了。为什么?

哈尔普!!

编辑:添加错误以供参考。我选择了Newtonsoft.Json来演示。这很容易重现,实际上,任何具有多个版本的 NuGet 包

Error NU1605 Detected package downgrade: Newtonsoft.Json from 11.0.2 to 9.0.1. Reference the package directly from the project to select a different version. 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)。