2017-06-01 20 views
4

私はdotnet restore(または実行パッケージのVisual Studioで復元)を実行し、私はこのような警告を参照してください。「パッケージダウングレードが検出されました」という警告は何を意味しますか?

/usr/local/share/dotnet/sdk/1.0.4/NuGet.targets(97,5): warning : Detected package downgrade: Microsoft.EntityFrameworkCore.Design from 1.1.1 to 1.0.3 [/Users/markamery/somesolution/SomeSolution.sln] 
/usr/local/share/dotnet/sdk/1.0.4/NuGet.targets(97,5): warning : 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): warning : SomeProject (>= 1.0.0) -> Microsoft.EntityFrameworkCore.Design (>= 1.0.3) [/Users/markamery/somesolution/SomeSolution.sln] 

私は上記の警告の意味を解析するために苦労しています。

  • 「パッケージのダウングレード」とは、ここでは何ですか?
  • 「パッケージダウングレード」はどうなるでしょうか?
  • 「パッケージダウングレードの検出」の下の行は何ですか?特に、そこにあるパッケージ間の矢印(->)は何を伝えるのでしょうか?

答えて

8

この場合、依存グラフはMicrosoft.EntityFrameworkCore.Designの2つのバージョンを参照します。これは、->を含む線で示されている:

最初の行の後に、それはあなたのプロジェクトが順番にバージョン1.1.1Microsoft.EntityFrameworkCore.Designを参照するパッケージに解決されたMicrosoft.EntityFrameworkCore.Toolsバージョン1.1.0を、参照することを示しています。

あなたのパッケージはMicrosoft.EntityFrameworkCore.Designを直接参照しています(1.0.3)。

NuGet documentation for dependency resolution状態、この場合に適用されるルール:

最寄りの勝利

アプリケーションのパッケージグラフは、同じパッケージの 異なるバージョンが含まれている、最も近いのパッケージ には、グラフのアプリケーションが使用され、その他は無視されます。この は、アプリケーションが依存性グラフ の特定のパッケージバージョンを上書きできるようにします。

このルールは、アプリケーションが別の依存関係とは別のバージョンのパッケージを直接参照するため、ここで適用されます。このバージョンはより低いので、NuGetは警告を出すために警告を出します。これは、他の依存関係では、下位バージョンには存在しない機能がいくつか期待できるからです。

最寄り勝ルールは、このように潜在的にグラフ内の他の依存関係を壊す、パッケージ バージョンのダウングレードにつながることができます:ドキュメントもこれに関する警告が含まれています。 このルールは、警告を表示してユーザーに警告します。

+0

ダウングレードで別のパッケージが壊れても、ダウングレードを削除すると、ダウングレードが必要なパッケージが破損する場合はどうすればよいですか?運が悪い?私はダウングレードが必要なパッケージは、依存関係の新しいバージョンで動作するように修正する必要があると思いますか? – Bassebus

+0

2つのバージョンの間に急な変更があった場合は、「はい」と表示されます。あなたは不運です。パッケージの1つに修正が必要な場合や、可能であれば、関連するすべてのパッケージの下位バージョンを使用する必要があります。 –

関連する問題