Как удалить пакет NuGet с сервера?

Я добавил новый пакет для nuget (я не говорю о добавлении ссылки на пакет в проект). Я добавил новые пакеты на сервер, чтобы другие могли использовать/использовать этот пакет в своих проектах.

Скажем, что имя пакета Parser1.0.0.0.nupkg

Проблема заключается в том, что я забыл добавить одну зависимость. Теперь я хочу отредактировать или удалить и снова добавить правильный. Но я не хочу менять его номер версии.

Кто-нибудь знает, как это сделать?

Ответ 1

Постоянное удаление пакетов не поддерживается, но вы можете контролировать, как они перечислены. (предполагая, что вы говорите о nuget.org).

После входа в систему на странице удаления пакета есть дополнительная информация. например https://nuget.org/packages/Parser/1.0.0.0/Delete.

Обозначение nuget с страницы пакета удаления:

"Почему я не могу удалить свой пакет? Наша политика заключается в том, чтобы навсегда удалять пакеты NuGet, которые действительно нужны, например пакеты, содержащие пароли, вредоносный/вредоносный код и т.д. Эта политика очень похожа на политики, применяемые другими менеджерами пакетов, такими как Ruby Gems.

Отказ от пакета удалит пакет из доступных в NuGet. Пакет по-прежнему доступен для загрузки как зависимость по трем основным причинам.

Другие пакеты могут зависеть от этого пакета. Эти пакеты могут не обязательно находиться в этой галерее. Обеспечивает, чтобы люди, использующие NuGet без пакетов (восстановление пакетов), не были разбиты. Помогает гарантировать, что важные пакеты, принадлежащие сообществу, не будут удалены массой ".

Я бы предложил отказаться от предыдущего пакета и нагрузить версию до 1.0.0.1 после добавления зависимости.

Ответ 2

Предполагая, что вы управляете частным сервером 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

Ответ 3

Если вы нажмете "Удалить пакет" в подменю пакета (слева), вы перенаправляетесь на другую страницу, сообщая вам следующее:

Если вам нужно, чтобы пакет был удален, нажмите ссылку "Контактная поддержка", и мы позаботимся о нем для вас.

Что касается меня, это сработало совершенно нормально, я связался с поддержкой, требующей удаления моего пакета, потому что я случайно загрузил его на продуктивный сервер NuGet вместо промежуточной среды.

Однако я бы всегда рекомендовал сначала протестировать ваш пакет, используя staging.nuget.com. Затем вы можете добавить промежуточную среду в качестве репозитория пакетов в Visual Studio для тестирования.

Ответ 4

Это возможно для частных серверов NuGet. Используйте команду удаления NuGet.

nuget delete MyPackage 1.0

Ответ 5

Ну, в вашем конкретном случае вы можете добавить зависимость, вручную отредактировав файл .nuspec, если у вас есть доступ к вашему серверу nuget. Откройте каталог данных сервера nuget (где он хранит файлы .nupkg), найдите пакет и либо используйте инструмент NugetPackageExplorer, либо вручную отредактируйте метаданные (файл .nupkg - это zip-архив, откройте его и отредактируйте файл YourPackageName.nuspec для добавления зависимость). Это будет выглядеть примерно так:

<dependencies>
  <dependency id="RouteMagic" version="1.1.0" />
  <dependency id="RouteDebugger" version="1.0.0" />
</dependencies>