19

使用时

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

我有一个

响应状态码不表示成功:409(冲突)。

错误

有没有办法覆盖所有已经上传的包?

4

3 回答 3

28

有没有办法覆盖所有已经上传的包?

简单的答案是否定的。Jonathan Myers 的回答指出了正确的文档:理解包的不变性

将包的特定版本发布到提要后,该版本号将永久保留。您不能上传具有相同版本号的较新修订包,也不能将其删除并上传具有相同版本的新包。

这是因为许多包客户端(包括 NuGet)会在您的计算机上保留包的本地缓存。一旦客户端缓存了特定的package@version,它将在未来的安装/恢复请求中返回该副本。如果在服务器上将package@version(rev 1) 替换为新的package@version(rev 2),则客户端无法区分。这可能导致来自不同机器的不确定构建结果。

所以我们不能覆盖所有已经上传的包,即使我们不能删除它们并重新上传。要解决此问题,唯一的方法是使用新版本上传包

于 2017-07-03T03:22:16.260 回答
6

这在 VSTS 中是有意禁止的。

于 2017-06-30T14:19:59.737 回答
5

尝试?replace=true在 URL 的末尾添加。或者,您可以尝试AllowOverwriteExistingPackages=true.

我不确定是否visualstudio.com已经支持此功能,但这就是 Octopus Deploy 的 NuGet 服务器的工作方式。

于 2017-06-30T10:56:19.840 回答