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

Ing*_*o B 8 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
Run Code Online (Sandbox Code Playgroud)

我有一个

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

错误

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

Leo*_*SFT 19

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

简单的答案是,乔纳森迈尔斯的回答指出了正确的文件:了解包的不变性.

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

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

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

  • 那么开发和测试包的正确(方便)方法是什么?@IngoB 你弄清楚了吗?我真的应该在每次打包和测试库时发布一个次要版本号吗?我只是推送到我的机器上本地的本地文件夹。 (2认同)

Dáv*_*nár 5

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

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


小智 5

VSTS中有意禁止这样做。