当我运行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]
我正在努力解析上面警告的含义。我不清楚各种各样的事情:
->
)传达了什么?答案 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会发出警告以提醒您,因为其他依赖项可能会期望某些功能在较低版本中不存在。该文档还包含有关此内容的警告:
最近的胜利规则可能会导致套餐降级 版本,因此可能会破坏图中的其他依赖项。 因此,此规则应用警告以提醒用户。