我已经为nuget添加了新的包(我不是在谈论将包的引用添加到项目中)。我已经向服务器添加了新的包,以便其他人可以在他们的项目中使用/使用该包。
说包名是Parser1.0.0.0.nupkg
问题是我忘了添加一个依赖项。现在我想编辑或删除并再次添加正确的。但我不想更改其版本号。
任何人都知道怎么做?
答案 0 :(得分:15)
不支持永久删除软件包,但您可以控制它们的列出方式。 (假设你在谈论nuget.org)。
登录后,删除包页面上有其他信息。例如https://nuget.org/packages/Parser/1.0.0.0/Delete。
从删除包页面引用nuget的说明:
“为什么我不能删除我的包裹? 我们的政策是永久删除真正需要它的NuGet包,例如包含密码,恶意/有害代码等的包。此策略与其他包管理器(如Ruby Gems)采用的策略非常相似。
取消列出该程序包将删除该程序包在NuGet中可用。由于三个主要原因,该程序包仍可作为依赖项下载。
其他包可能取决于该包。这些包可能不一定在这个库中。 确保在不提交包(包恢复)的情况下使用NuGet的人不会被破坏。 帮助确保重要的社区拥有的包不会被大规模删除。“
我建议在添加依赖项后取消列出以前的软件包并将版本提升到1.0.0.1。
答案 1 :(得分: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
答案 2 :(得分:4)
私有NuGet服务器是可能的。使用NuGet删除命令。
nuget delete MyPackage 1.0
更新:这仍然无法解决OP的问题,因为它不允许您重复使用版本号,因为它仍然被服务器锁定。没有安全的方法来永久删除特定版本的软件包。
答案 3 :(得分:1)
如果您点击包的子菜单(左侧)中的删除包,您将被重定向到另一个页面,告诉您:
如果您需要永久删除该软件包,请单击“联系支持”链接,我们将为您处理
至于我,这完全没问题,我联系了支持请求我的包被删除,因为我意外地将它上传到高效的NuGet服务器而不是登台环境。
但是,我总是建议您先使用staging.nuget.com测试您的软件包。然后,您可以将暂存环境作为包存储库添加到Visual Studio中进行测试。
答案 4 :(得分: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>
答案 5 :(得分:0)
成功发布后,您会收到NuGet的电子邮件。
关注此电子邮件,因为他们在其中写道:
If this was not intended, please "contact support".
如果您单击“联系支持”,则该链接将与NuGet中的软件包管理链接在一起,您可以在其中给出为什么要删除它的原因,然后执行删除操作。
仅此而已!