web-dev-qa-db-ja.com

Visual Studio Team Servicesのフィードでnugetパッケージを上書きする

使用中

nuget.exe Push \\share\Packages\*.nupkg -Source "https://myvsts.pkgs.visualstudio.com/_packaging/tcpcm/nuget/v3/index.json" -ApiKey VSTS

私は持った

応答ステータスコードが成功を示さない:409(競合)。

エラー

すでにアップロードされているすべてのパッケージを上書きする方法はありますか?

11
Ingo B

すでにアップロードされているすべてのパッケージを上書きする方法はありますか?

簡単な答えは「いいえ」です。JonathanMyersの答えは正しいドキュメントを指摘しています パッケージの不変性を理解する

パッケージの特定のバージョンをフィードに公開すると、そのバージョン番号は永久に予約されます。同じバージョン番号の新しいリビジョンパッケージをアップロードしたり、それを削除して同じバージョンの新しいパッケージをアップロードしたりすることはできません。

これは、NuGetを含む多くのパッケージクライアントが、マシン上のパッケージのローカルキャッシュを保持しているためです。クライアントが特定のpackage@versionをキャッシュすると、将来のインストール/復元リクエストでそのコピーが返されます。サーバーでpackage@version(リビジョン1)を新しいpackage@version(リビジョン2)に置き換えた場合、クライアントは違いを認識できません。これは、異なるマシンからの不確定なビルド結果につながる可能性があります。

そのため、削除して再アップロードできなかったとしても、すでにアップロードされているすべてのパッケージを上書きすることはできませんでした。この問題を解決する唯一の方法は、新しいバージョンのパッケージをアップロードすることです

17
Leo Liu-MSFT

これはVSTSでは 意図的に禁止されています です。

5
Jonathan Myers

URLの最後に?replace=trueを追加してみてください。または、AllowOverwriteExistingPackages=trueを試すこともできます。

visualstudio.comがすでに supports であるかどうかはわかりませんが、Octopus DeployのNuGetサーバーの場合は、このように動作します。

4
Dávid Molnár