私の会社は、独自のプライベートパッケージをアップロードするための独自の内部NuGetパッケージリポジトリをホストしています。すべてのパブリックパッケージをプルダウンするために、引き続き公式のNuGet.orgリポジトリを使用します。また、プロジェクトでPackage Restoreを有効にして、ビルドで不足しているパッケージをダウンロードできるようにします。
のリストに独自のNuGetリポジトリを追加しTools > Library Package Manager > Package Manager Settings > Package Sources
、デフォルトのリポジトリ(NuGet公式パッケージソース)もリストに残しました。NuGet.targets
また、ファイルにはPackageSource
要素として独自のリポジトリがあります。ただし、公式リポジトリはそのファイルに含まれていません。PackageSource
これは私たちのために数ヶ月働いています。独自のパッケージの新しいバージョンをリポジトリにリリースすると、プロジェクトに表示されます。また、新しいパブリックパッケージが利用可能になったとき、私たちのプロジェクトはnuget.orgでそれらを見つけるのに問題はありませんでした。
しかし、つい最近、ビルドが公式リポジトリからパッケージをダウンロードできなくなり始めました。ソリューションをビルドすると、出力には、独自のリポジトリでホストしていない不足しているパッケージを参照するすべてのプロジェクトの次の行が含まれます。
C:\code\MyCodebase\.nuget\nuget.targets(79,9): error MSB3073: The command ""C:\code\MyCodebase\.nuget\nuget.exe" install "C:\code\MyCodebase\MyProject\packages.config" -source "http://nuget.example.com/repo/" -o "C:\code\MyCodebase\packages"" exited with code -1.
コマンドラインからそのコマンドを自分で実行すると、次の出力が明るい赤で表示されます。
Unable to find version '2.5.10.11092' of package 'NUnit'.
Unable to find version '1.2.0' of package 'Common.Logging'.
これは、リポジトリにNUnitパッケージが含まれておらず、-Source
パラメーターが公式リポジトリを使用していないために発生していると思います。
私の質問は:なぜそれが以前は機能していたのですか?私は夢中ですか?またはNuGet.exe
、最近の更新で動作に何か変更がありますか?NuGetは常に公式リポジトリを最終的なフォールバックとして使用しているという印象を受けましたが、それは昨日までそのように見えました。
公式のNuGetリポジトリをNuGet.targets
ファイルに追加する唯一の解決策はありますか?同じソリューションでプライベートパッケージとパブリックパッケージの依存関係を持つことを処理するための最良の方法は何ですか?使用するすべての公開パッケージを自分のリポジトリにアップロードする必要はありません。