在visual studio团队服务的feed中覆盖nuget包

时间:2017-06-30 10:47:42

标签: visual-studio nuget nuget-package azure-artifacts

使用

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

我有一个

  

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

错误

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

3 个答案:

答案 0 :(得分:15)

  

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

简单的答案是否。乔纳森迈尔斯的回答指出了正确的文件:Understand immutability of packages

  

将特定版本的软件包发布到Feed后,该版本号将永久保留。您无法上传具有相同版本号的较新版本包,或删除它并以相同版本上载新包。

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

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

答案 1 :(得分:5)

尝试在网址末尾添加?replace=true。或者,您可以尝试AllowOverwriteExistingPackages=true

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

答案 2 :(得分:5)

这是VSTS中的intentionally prohibited