クラス ライブラリ プロジェクト ( C )への参照を持つWeb プロジェクト ( W ) があります。
W --> C
CはN1を参照します。
C --> N1
N1は、2 つの依存関係を持つカスタム NuGet パッケージです (どちらもカスタム NuGet パッケージです): N2 e N3で、それぞれバージョン 2.1 以降と 3.4 以降を対象としています。
N1 ---> N2 (>= 2.1)
`--> N3 (>= 3.4)
N1パッケージをCに追加したとき、N2には 2.2 バージョンが利用可能だったので、NuGet は 2.1 ではなく、2.2 バージョンを取得することが期待されていました。
問題はここから始まります: Wをビルドすると、N2はWのbin
フォルダーにコピーされません。少しグーグルで調べたところ、Visual Studio は「ファースト クラスの依存関係」ではない依存関係、つまりCによって直接使用されない依存関係をWの出力フォルダーにコピーしないことがわかりました。以下のメソッドをCの任意のクラスに追加すると、N2がコピーされるため、確認できます。
private void ForceCopyOfN2()
{
var someObject = new N2.SomeClass();
}
また、上記のハックがなければ、N2のバージョンをN1パッケージの依存関係で指定された同じバージョン(つまり、2.2 から 2.1) にダウングレードすると、N2もコピーされます。
したがって、これは NuGet の問題であると推測しています。誰もこのようなことを経験しましたか?