从Visual Studio Online Package Feed中删除NuGet包而不是Unlist

sho*_*tor 5 .net c# .net-core azure-devops

是否可以NuGet从Visual Studio Online包源中删除包?

我使用构建任务为dotnet核心项目在Visual Studio Online上设置CI.

其中一个步骤是pack将解决方案中的所有项目作为NuGet包,将push这些项目包装到包中.

构建在我的第一次不过做工精细,packpush建立我用一个步骤**/.csproj通配符代替src/**/.csproj.所以它打包并推动了我所有的测试项目tests/**.

我想从Feed中删除这些包.我可以在UI中找到的唯一选项是unlist包.但是这个操作后包仍然存在.

我还尝试通过CLI删除软件包:nuget delete.但它只是做同样的事情unlist.

有没有人能够删除他们的包裹?

Jul*_*iën 10

是的,这可以通过VSTS的套餐管理开箱即用.请注意,不公开和删除之间存在差异,我将进一步详细说明.

用于从VSTS包管理中删除现有包的TL; DR故事是您必须是包的"所有者"或具有"项目管理员"的角色才能删除它.要取消列出包,您只需要"贡献者"角色.对于这两个选项,只需在VSTS中输入包详细信息,然后从省略号下的菜单中选择适当的选项:

删除包截图

现在获取一些可能有用的背景信息.visualstudio.com上有一些官方文档:

有两个选项可用于从Feed中删除NuGet包的版本.

取消列出:取消列出程序包的版本会修改程序包在NuGet客户端中的显示方式(有关unlist如何工作的完整说明,请参阅NuGet文档).取消列出版本可以帮助您防止新版本的使用,而不会破坏依赖项目和构建.

删除:删除软件包的某个版本会使其永久不可用于安装或还原.

取消列表并删除尊重饲料不变性.将特定版本的软件包发布到源后,该版本号将永久保留.您无法上载具有相同版本号的较新版本包,或删除它并在同一版本上载新包.

这里的重要部分是"饲料不变性",根据佳能,转化为:

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

作为底部的脚注,文档还确认了您已经发现的有关nuget.exe的内容:

目前,NuGet.exe只能取消列出包; 团队服务和TFS解释nuget.exe删除作为不公开操作与NuGet.org一致.要删除程序包,必须使用REST API或Web界面.

以编程方式执行此操作应该通过REST API或VSTS管理部分完成,如上所述.NuGet.exe只能用于不列名 - 不能删除.

考虑到所有这些因素,使用VSTS可以删除软件包,但是 - 一如既往 - 在您这样做之前要三思而后行.还记得LeftPad的崩溃吗?;)