如何从服务器上删除NuGet包?

Bal*_*til 14 package nuget

我已经为nuget添加了新的包(我不是在谈论将包的引用添加到项目中).我已经向服务器添加了新的包,以便其他人可以在他们的项目中使用/使用该包.

假设包名是Parser1.0.0.0.nupkg

问题是我忘了添加一个依赖项.现在我想编辑或删除并再次添加正确的.但我不想改变它的版本号.

谁知道怎么做?

Ale*_*ion 15

不支持永久删除包,但您可以控制它们的列出方式.(假设你在谈论nuget.org).

登录后,删除包页面上有其他信息.例如https://nuget.org/packages/Parser/1.0.0.0/Delete.

从删除包页面引用nuget的解释:

"为什么我不能删除我的软件包?我们的政策是只删除真正需要它的NuGet软件包,例如包含密码,恶意/有害代码等的软件包.此策略与其他软件包采用的策略非常相似Ruby Gems等经理.

取消列出该程序包将删除该程序包在NuGet中可用.由于三个主要原因,该程序包仍可作为依赖项下载.

其他包可能取决于该包.这些包可能不一定在这个库中.确保在不提交包(包恢复)的情况下使用NuGet的人不会被破坏.帮助确保重要的社区拥有的包不会被大规模删除."

我建议取消列出以前的包,并在添加依赖项后将版本提升到1.0.0.1.

  • 是的,当您错误地发布某些内容时,可以删除包。在从 NuGet 获得的电子邮件中,您可以单击“联系支持”,这会链接到您的程序包管理器,您可以在其中给出为什么要删除它的原因,然后给出删除它的操作。并做了!您只需同意您的行为可以通过删除来影响他人即可。 (4认同)

gre*_*ade 7

假设您管理私有NuGetGallery服务器并且可以访问MSSQL Server数据库,则可以通过删除库的存在知识来删除该包.

您可能永远不应该使用它,但为了科学的利益,这里是你如何忽视不要的好理由(注意这将删除名为'MyNastyPackage'的包的所有版本):

DECLARE @PackageRegistrationKey int
SELECT @PackageRegistrationKey = [Key]
 FROM PackageRegistrations
 WHERE Id = 'MyNastyPackage'

BEGIN TRANSACTION
DELETE pf
 FROM [NuGetGallery].[dbo].[PackageFrameworks] pf
 JOIN Packages p ON pf.Package_Key = p.[Key]
 WHERE PackageRegistrationKey = @PackageRegistrationKey
DELETE pa
 FROM [NuGetGallery].[dbo].[PackageAuthors] pa
 JOIN Packages p ON pa.PackageKey = p.[Key]
 WHERE PackageRegistrationKey = @PackageRegistrationKey
DELETE gs
 FROM [NuGetGallery].[dbo].[GallerySettings] gs
 JOIN [PackageStatistics] ps ON gs.DownloadStatsLastAggregatedId = ps.[Key]
 JOIN Packages p ON ps.PackageKey = p.[Key]
 WHERE PackageRegistrationKey = @PackageRegistrationKey
DELETE ps
 FROM [NuGetGallery].[dbo].[PackageStatistics] ps
 JOIN Packages p ON ps.PackageKey = p.[Key]
 WHERE PackageRegistrationKey = @PackageRegistrationKey
DELETE pd
 FROM [NuGetGallery].[dbo].[PackageDependencies] pd
 JOIN Packages p ON pd.PackageKey = p.[Key]
 WHERE PackageRegistrationKey = @PackageRegistrationKey
DELETE
 FROM [NuGetGallery].[dbo].[Packages]
 WHERE PackageRegistrationKey = @PackageRegistrationKey
DELETE por
 FROM PackageOwnerRequests por
 JOIN PackageRegistrations pr ON pr.[Key] = por.PackageRegistrationKey
 WHERE pr.[Key] = @PackageRegistrationKey
DELETE pro
 FROM PackageRegistrationOwners pro
 JOIN PackageRegistrations pr ON pr.[Key] = pro.PackageRegistrationKey
 WHERE pr.[Key] = @PackageRegistrationKey
DELETE FROM PackageRegistrations
 WHERE [Key] = @PackageRegistrationKey
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)


Mic*_*rls 5

专用的NuGet服务器是可能的。使用NuGet delete命令。

nuget delete MyPackage 1.0

更新:这仍然不能解决OP的问题,因为它不允许您重用版本号,因为它仍被服务器锁定。没有安全的方法来永久删除程序包的特定版本。

  • 根据[此文档页面](https://docs.microsoft.com/zh-cn/nuget/tools/cli-ref-delete),命令“删除或取消列出软件包”,具体取决于服务器的配置方式,因此实际上有可能重用版本号。这样的命令对我有用:`nuget delete MyPackage 1.0 -Source http://package.contoso.com/source -apikey A1B2C3`。 (3认同)

Wil*_*che 5

然后,当您成功发布它时,您会收到一封来自 NuGet 的电子邮件。

请留意这封电子邮件,因为他们写道:

If this was not intended, please "contact support".
Run Code Online (Sandbox Code Playgroud)

如果您单击“联系支持”,则会链接到 NuGet 中的包管理器,您可以在其中给出要删除它的原因,然后给出删除它的操作。

就这样!