0

私の会社は、独自のプライベートパッケージをアップロードするための独自の内部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ファイルに追加する唯一の解決策はありますか?同じソリューションでプライベートパッケージとパブリックパッケージの依存関係を持つことを処理するための最良の方法は何ですか?使用するすべての公開パッケージを自分のリポジトリにアップロードする必要はありません。

4

1 に答える 1

2

nuget.targetのコメントには、次のように記載されています。公式フィードをリストに追加する必要があります

<!-パッケージの復元に使用されるパッケージソース。デフォルトでは、%APPDATA%\ NuGet \ NuGet.Configの下に登録されているソースが使用されます->

<!-パッケージソースの場合、公式のNuGetパッケージソース(https://nuget.org/api/v2/)は除外されます指定されていて、リストに表示されません->

最近、%appdata%\ local \ nuget \ cacheからnugetキャッシュをクリアしましたか?ボックスで手順を試したところ、(ローカルリポジトリからの)不足しているパッケージがローカルのNugetキャッシュにある場合、依存関係のインストールが機能しました。

于 2013-01-03T23:52:37.883 に答える