21

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

说包名是 Parser1.0.0.0.nupkg

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

有谁知道该怎么做?

4

6 回答 6

17

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

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

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

“为什么我不能删除我的包?我们的策略是只永久删除真正需要它的 NuGet 包,例如包含密码、恶意/有害代码等的包。此策略与其他包采用的策略非常相似Ruby Gems 等管理人员。

取消列出包将删除包在 NuGet 中的可用状态。由于三个主要原因,该软件包仍可作为依赖项下载。

其他包可能依赖于该包。这些包可能不一定在这个库中。确保使用 NuGet 而不提交包(包还原)的人不会被破坏。有助于确保重要的社区拥有的软件包不会被大量删除。”

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

于 2012-07-25T17:24:13.707 回答
10

Assuming you administer a private NuGetGallery server and have access to the MSSQL Server database, you can remove the package by removing the gallery's knowledge of its existence.

You should probably never use this, but in the interests of science, here's how you would disregard the good reasons not to (note that this will delete all versions of a package called '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
于 2014-02-21T11:37:18.077 回答
10

私有 NuGet 服务器是可能的。使用 NuGet 删除命令。

nuget delete MyPackage 1.0

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

于 2017-12-08T16:04:49.537 回答
2

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

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

If this was not intended, please "contact support".

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

就这样!

于 2020-02-09T12:48:01.173 回答
1

如果您在包的子菜单(左侧)中单击删除包,您将被重定向到另一个页面,告诉您以下内容:

如果您需要永久删除软件包,请单击联系支持链接,我们会为您处理

对我来说,这完全没问题,我联系了支持人员,要求删除我的包,因为我不小心将它上传到了高效的 NuGet 服务器而不是暂存环境。

但是,我始终建议先使用staging.nuget.com测试您的包。然后,您可以在 Visual Studio 中将暂存环境添加为包存储库以进行测试。

于 2014-11-12T19:40:35.920 回答
0

好吧,在您的特定情况下,如果您有权访问 nuget 服务器,则可以通过手动编辑 .nuspec 文件来添加依赖项。打开 nuget 服务器的数据目录(存储其 .nupkg 文件的位置),找到包并使用 NugetPackageExplorer 工具或手动编辑元数据(.nupkg 文件是一个 zip 存档,打开它并编辑 YourPackageName.nuspec 文件以添加依赖)。它看起来类似于:

<dependencies>
  <dependency id="RouteMagic" version="1.1.0" />
  <dependency id="RouteDebugger" version="1.0.0" />
</dependencies>
于 2014-10-05T21:53:34.257 回答