gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:25:28 25 4
gpt4 key购买 nike

是否可以删除NuGet来自 Visual Studio Online 包提要的包?

我已经使用构建任务在 Visual Studio Online 上为一个 dotnet 核心项目设置了 CI。

其中一个步骤是 pack解决方案中的所有项目为 NuGet包裹和push这些到包饲料。

构建工作正常,但是在我第一次尝试 pack 时和 push构建步骤我使用了 **/.csproj通配符而不是 src/**/.csproj .所以它也打包并推送了我所有在 tests/** 下的测试项目.

我想从提要中删除这些包。我在 UI 中可以找到的唯一选项是 unlist包裹。但此操作后包仍然存在。

我还尝试通过 CLI 删除包:nuget delete .但它与 unlist 的作用相同.

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

最佳答案

是的,这可以通过 VSTS 的包管理进行开箱即用。请注意,取消列出和删除之间存在差异,我将进一步详细说明。

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

Delete package screenshot

现在了解一些可能有用的背景信息。有一些官方文档可用 on visualstudio.com :

There are two options available to remove a version of a NuGet package from a feed.

Unlist: unlisting a version of a package modifies how the package appears in NuGet clients (see the NuGet docs for a full description of how unlist works). Unlisting a version can help you prevent new usage of it without breaking dependent projects and builds.

Delete: Deleting a version of a package makes it permanently unavailable for install or restore.

Unlist and delete both respect feed immutability. 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.

这里的重要部分是“feed 不变性”,即 according to the canon , 转化为:

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.exe 的内容:

Currently, NuGet.exe can only unlist packages; Team Services and TFS interpret nuget.exe delete as an unlist operation to be consistent with NuGet.org. To delete a package, you must use either the REST APIs or the web interface.

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

考虑到所有这些因素后,您可以使用 VSTS 删除包,但与往常一样,在执行此操作之前请三思。记住 LeftPad debacle ? ;)

关于c# - 从 Visual Studio Online Package Feed 而不是 Unlist 中删除 NuGet 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44929327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com