2017-06-30 117 views
3

同時使用覆蓋的NuGet包在Visual Studio團隊服務

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

我得到了一個

響應狀態代碼表明沒有成功:409(衝突)。

錯誤

有沒有辦法覆蓋已經被上傳的所有包?

回答

4

有沒有辦法覆蓋所有已經上傳的軟件包?

簡單的答案是不可以。Jonathan Myers的答案指出了正確的文件:Understand immutability of packages

將包的特定版本發佈到提要後,該版本號將被永久保留。您無法上傳具有相同版本號的較新版本的軟件包,或者刪除它並在相同版本上載新軟件包。

這是因爲許多包客戶端(包括NuGet)都會在您的機器上保留本地緩存。一旦客戶端緩存了一個特定的[email protected],它將在未來的安裝/恢復請求中返回該副本。如果在服務器上將[email protected](rev 1)替換爲[email protected](rev 2),則客戶端無法區分差異。這可能會導致來自不同機器的不確定的構建結果。

因此我們無法覆蓋已經上傳的所有軟件包,即使我們無法刪除它們並重新上傳。要解決此問題,唯一的方法是上傳包含新版本的軟件包。

+0

好的感謝信息,我現在做的是將所有包上傳到源代碼,然後創建nuget推的構建定義。它推送所有包,並且構建任務也允許跳過已安裝的包,非常方便。 –

1

嘗試在URL的末尾添加?replace=true。或者,您可以嘗試AllowOverwriteExistingPackages=true

我不確定visualstudio.com已經是supports這個,但這是Octopus Deploy的NuGet服務器的工作原理。

+0

嗨,那裏,謝謝你的信息,我已經嘗試過,但他們不支持 –

+1

有沒有辦法批量刪除所有的軟件包,所以我可以再推他們? –