"Detected package downgrade"警告是什么意思?



当我运行dotnet restore(或在Visual Studio中运行软件包还原(时,我会看到这样的警告:

  • /usr/local/share/dotnet/sdk/1.0.4/nuget.targets(97,5(:警告:检测到的软件包降级:Microsoft.entityframeworkcore.design从1.1.1到1.0.0.0.0.3 [Markamery/somestolution/somestolution.sln]
  • /USR/local/share/dotnet/sdk/1.0.4/nuget.targets(97,5(:警告:SomeProject:someProject(> = 1.0.0( -> Microsoft.entityframeworkcore.tools(> = 1.1.0.0.1.0.1.1.0( -> microsoft.entityframeworkcore.design(> = 1.1.1([/USERS/markamery/somesolution/somesolution.sln]
  • /usr/local/share/dotnet/sdk/1.0.4/nuget.targets(97,5(:警告:someProject(> = 1.0.0( -> microsoft.entityframeworkcore.design(> = 1.0.3.3([/users/markamery/somesolution/somesolution.sln]

我正在努力解析上述警告的含义。我不清楚各种事情:

  • 在这种情况下,什么是"软件包降级"?
  • 是什么导致"降级"发生?
  • "检测到的软件包降级"的线是什么意思?特别是,那里的包装之间的箭头(->(传达了什么?

在这种情况下,您的依赖关系图引用了两个版本的Microsoft.EntityFrameworkCore.Design。这是由包含 ->的行指示的:

在第一行之后,它表明您的项目参考Microsoft.EntityFrameworkCore.Tools版本1.1.0,该版本已解决为又有一个包的软件包,该软件包反过来 Microsoft.EntityFrameworkCore.Design CC_7。

然后显示您的软件包直接引用Microsoft.EntityFrameworkCore.Design1.0.3

依赖项解决方案的Nuget文档指出在这种情况下将适用的规则:

最近的胜利

当应用程序的包装图包含 同一包的不同版本,最接近的软件包 使用图中的应用程序,而其他应用程序被忽略。这 允许应用程序覆盖任何特定的软件包版本 依赖图。

此规则在此处适用,因为您的应用程序直接引用了与其他依赖关系不同版本的软件包。由于此版本较低,因此Nuget发出警告以提醒您,因为其他依赖关系可能会期望某些功能在较低版本中不存在。该文档还包括有关此的警告:

最近的胜利规则可以导致包装的降级 版本,因此有可能打破图中其他依赖关系。 因此,该规则与警告一起提醒用户。

最新更新