Как удалить пакет 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>