使用时
nuget.exe push \\share\Packages\*.nupkg -Source "https://myvsts.pkgs.visualstudio.com/_packaging/tcpcm/nuget/v3/index.json" -ApiKey VSTS
我有一个
响应状态码不表示成功:409(冲突)。
错误
有没有办法覆盖所有已经上传的包?
使用时
nuget.exe push \\share\Packages\*.nupkg -Source "https://myvsts.pkgs.visualstudio.com/_packaging/tcpcm/nuget/v3/index.json" -ApiKey VSTS
我有一个
响应状态码不表示成功:409(冲突)。
错误
有没有办法覆盖所有已经上传的包?
有没有办法覆盖所有已经上传的包?
简单的答案是否定的。Jonathan Myers 的回答指出了正确的文档:理解包的不变性。
将包的特定版本发布到提要后,该版本号将永久保留。您不能上传具有相同版本号的较新修订包,也不能将其删除并上传具有相同版本的新包。
这是因为许多包客户端(包括 NuGet)会在您的计算机上保留包的本地缓存。一旦客户端缓存了特定的package@version
,它将在未来的安装/恢复请求中返回该副本。如果在服务器上将package@version
(rev 1) 替换为新的package@version
(rev 2),则客户端无法区分。这可能导致来自不同机器的不确定构建结果。
所以我们不能覆盖所有已经上传的包,即使我们不能删除它们并重新上传。要解决此问题,唯一的方法是使用新版本上传包。
这在 VSTS 中是有意禁止的。
尝试?replace=true
在 URL 的末尾添加。或者,您可以尝试AllowOverwriteExistingPackages=true
.
我不确定是否visualstudio.com
已经支持此功能,但这就是 Octopus Deploy 的 NuGet 服务器的工作方式。