同時使用覆蓋的NuGet包在Visual Studio團隊服務
nuget.exe push \\share\Packages\*.nupkg -Source "https://myvsts.pkgs.visualstudio.com/_packaging/tcpcm/nuget/v3/index.json" -ApiKey VSTS
我得到了一個
響應狀態代碼表明沒有成功:409(衝突)。
錯誤
有沒有辦法覆蓋已經被上傳的所有包?
同時使用覆蓋的NuGet包在Visual Studio團隊服務
nuget.exe push \\share\Packages\*.nupkg -Source "https://myvsts.pkgs.visualstudio.com/_packaging/tcpcm/nuget/v3/index.json" -ApiKey VSTS
我得到了一個
響應狀態代碼表明沒有成功:409(衝突)。
錯誤
有沒有辦法覆蓋已經被上傳的所有包?
有沒有辦法覆蓋所有已經上傳的軟件包?
簡單的答案是不可以。Jonathan Myers的答案指出了正確的文件:Understand immutability of packages。
將包的特定版本發佈到提要後,該版本號將被永久保留。您無法上傳具有相同版本號的較新版本的軟件包,或者刪除它並在相同版本上載新軟件包。
這是因爲許多包客戶端(包括NuGet)都會在您的機器上保留本地緩存。一旦客戶端緩存了一個特定的[email protected]
,它將在未來的安裝/恢復請求中返回該副本。如果在服務器上將[email protected]
(rev 1)替換爲[email protected]
(rev 2),則客戶端無法區分差異。這可能會導致來自不同機器的不確定的構建結果。
因此我們無法覆蓋已經上傳的所有軟件包,即使我們無法刪除它們並重新上傳。要解決此問題,唯一的方法是上傳包含新版本的軟件包。
嘗試在URL的末尾添加?replace=true
。或者,您可以嘗試AllowOverwriteExistingPackages=true
。
我不確定visualstudio.com
已經是supports這個,但這是Octopus Deploy的NuGet服務器的工作原理。
嗨,那裏,謝謝你的信息,我已經嘗試過,但他們不支持 –
有沒有辦法批量刪除所有的軟件包,所以我可以再推他們? –
好的感謝信息,我現在做的是將所有包上傳到源代碼,然後創建nuget推的構建定義。它推送所有包,並且構建任務也允許跳過已安裝的包,非常方便。 –