覆盖 visual studio 团队服务提要中的 nuget 包

overwrite nuget packages in feed on visual studio team services

正在使用

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

我得到了一个

Response status code does not indicate success: 409 (Conflict).

错误

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

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

我不确定 visualstudio.com 是否已经 supports 这个,但这是 Octopus Deploy 的 NuGet 服务器的工作方式。

这是 VSTS 中的 intentionally prohibited

is there a way to overwrite all packages that have already been uploaded?

简单的答案是否定的。Jonathan Myers 的回答指出了正确的文档:Understand immutability of packages

Once you publish a particular version of a package to a feed, that version number is permanently reserved. You cannot upload a newer revision package with that same version number, or delete it and upload a new package at the same version.

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

所以我们无法覆盖所有已经上传的包,甚至我们无法删除它们并重新上传。要解决此问题,唯一的方法是上传新版本的软件包