“检测到的包降级”警告意味着什么?

时间:2017-06-01 12:47:57

标签: .net nuget nuget-package-restore

当我运行dotnet restore(或在Visual Studio中运行包还原)时,我看到如下警告:

  
      
  • /usr/local/share/dotnet/sdk/1.0.4/NuGet.targets(97,5):警告:检测到的软件包降级:Microsoft.EntityFrameworkCore.Design从1.1.1升级到1.0.3 [/ Users / markamery / somesolution / SomeSolution.sln]
  •   
  • /usr/local/share/dotnet/sdk/1.0.4/NuGet.targets(97,5):警告:SomeProject(> = 1.0.0) - > Microsoft.EntityFrameworkCore.Tools(> = 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)[/Users/markamery/somesolution/SomeSolution.sln]
  •   

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

  • 在这种情况下,什么是“包降级”?
  • 导致“套餐降级”的原因是什么?
  • “检测到的软件包降级”下面的行是什么意思?特别是,那些包之间的箭头(->)传达了什么?

1 个答案:

答案 0 :(得分:10)

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

的行表示

在第一行之后,它会显示您的项目引用了Microsoft.EntityFrameworkCore.Tools版本1.1.0,该版本已解析为一个包,该包又会在版本Microsoft.EntityFrameworkCore.Design引用1.1.1。< / p>

然后会显示您的包直接引用Microsoft.EntityFrameworkCore.Design上的1.0.3

Same Origin Policy声明了适用于这种情况的规则:

  

最近的胜利

     

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

此规则适用于此处,因为您的应用程序直接引用包的不同版本而不是另一个依赖项。由于此版本较低,因此NuGet会发出警告以提醒您,因为其他依赖项可能会期望某些功能在较低版本中不存在。该文档还包含有关此内容的警告:

  

最近的胜利规则可能会导致套餐降级   版本,因此可能会破坏图中的其他依赖项。   因此,此规则应用警告以提醒用户。