.NET —管理NuGet软件包与不同版本的常见依赖关系

时间:2018-09-20 01:42:34

标签: c# .net nuget nuget-package dotnet-cli

我有两个解决方案:SolutionA和SolutionB(在单独的存储库中)。两种解决方案都依赖于Package1,但是在SolutionA下的项目使用此程序包的1.0.0版本,但是在SolutionB下的项目使用2.0.0。

现在,需要打包和发布SolutionB中的库的NuGet程序包,该程序包将在SolutionA中的库中使用。

按预期,尝试此操作时会看到降级错误。因此,我决定将SolutionB中Package1的版本降级为1.0.0。代码仍然可以编译;在运行时没有不良的副作用。然后,我打包并发布,并尝试在SolutionA 编辑中重新使用:此时,我尝试通过完全卸载然后重新安装并直接在NuGet软件包管理器中直接降级来重新安装SolutionB NuGet软件包的最新版本( w / e叫做VS。

在这一点上,我仍然看到降级错误,理由是SolutionB依赖项正在利用更高版本,但实际上不再如此。为什么?

半!!

编辑:添加错误以供参考。我选择了Newtonsoft.Json进行演示。实际上,任何具有多个版本的NuGet软件包都易于复制

  

错误NU1605检测到软件包降级:版本11.0.2的Newtonsoft.Json   至9.0.1。直接从项目中引用包以选择一个   不同版本。 TestProjectA-> TestProjectB 1.0.0->   Newtonsoft.Json(> = 11.0.2)TestProjectA-> Newtonsoft.Json(> =   9.0.1)

TestProjectA的NuGet依赖项:

enter image description here

TestProjectB的NuGet依赖项:

enter image description here

1 个答案:

答案 0 :(得分:2)

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