2012-07-25 39 views
10

He agregado un nuevo paquete a nuget (no estoy hablando de agregar una referencia del paquete al proyecto). He agregado nuevos paquetes al servidor para que otros puedan consumir/usar ese paquete en sus proyectos.Cómo quitar el paquete NuGet del servidor?

Diga el nombre del paquete era Parser1.0.0.0.nupkg

El problema es que se me olvidó añadir una dependencia. Ahora quiero editar o eliminar y agregar la correcta otra vez. Pero no quiero cambiar su número de versión.

¿Alguien sabe cómo hacerlo?

Respuesta

14

No se admite la eliminación permanente de paquetes, pero puede controlar cómo se enumeran. (suponiendo que estés hablando de nuget.org).

Después de iniciar sesión, hay información adicional en la página Eliminar paquete. p.ej. https://nuget.org/packages/Parser/1.0.0.0/Delete.

Citando la explicación de Nuget desde la página del paquete de borrado:?

"¿Por qué no puedo eliminar mi paquete Nuestra política es solamente eliminar permanentemente los paquetes NuGet que realmente lo necesitan, tales como paquetes que contienen contraseñas, maliciosos/código dañino, etc. Esta política es muy similar a las políticas empleadas por otros gerentes de paquetes como Ruby Gems.

Si no se selecciona el paquete, el paquete no estará disponible en NuGet. una dependencia por tres razones principales.

Otros paquetes pueden depender de ese paquete. Esos paquetes pueden no estar necesariamente en esta galería. Asegura que las personas que usan NuGet sin comprometer paquetes (restauración de paquetes) no se rompan. ayuda a asegurar que los paquetes importante comunidad de propiedad no se eliminan de masas ".

Yo sugeriría unlisting el paquete anterior y chocando con la versión 1.0.0.1 después de añadir la dependencia.

+0

Sí, OP puede no querer volcar el número de versión, pero cuando se toma su paquete para dar una vuelta en público, usted tiene que obedecer las reglas de la carretera. –

7

Suponiendo que se va a administrar un servidor privado y NuGetGallery tener acceso a la base de datos del servidor MSSQL, puede eliminar el paquete eliminando el conocimiento de la galería de su existencia.

Probablemente nunca deba usar esto, pero en interés de la ciencia, así es como usted ignoraría las buenas razones para no (tenga en cuenta que esto eliminará todos versión s de un paquete llamado '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 
+0

para ver las variaciones de este script (paquetes múltiples, versión específica del paquete): https://gist.github.com/grenade/4a8b6edcd10308a5882f) – grenade

0

Pues bien, en su caso en particular se puede agregar una dependencia mediante la edición manual de archivos .nuspec si tiene un acceso a su servidor de Nuget. Abra el directorio de datos del servidor nuget (donde almacena sus archivos .nupkg), encuentre el paquete y use la herramienta NugetPackageExplorer o edite los metadatos manualmente (el archivo .nupkg es un archivo zip, ábralo y edite el archivo YourPackageName.nuspec para agregar una dependencia). Se vería como similar a esto:

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

Si hace clic en borrado y en el submenú del paquete (a la izquierda), se le redirige a otra página que le dice esto:

Si necesita que el paquete se elimine permanentemente, haga clic en el enlace Contactar con soporte y nosotros nos ocuparemos de usted

En mi caso, esto funcionó totalmente bien, contacté con el equipo de soporte. Solicitando que se elimine mi paquete porque lo cargué accidentalmente en el productivo servidor NuGet en lugar del entorno de ensayo.

Sin embargo, siempre recomendaría probar su paquete primero usando staging.nuget.com. A continuación, puede agregar el entorno de ensayo como repositorio de paquetes en Visual Studio para probarlo.

1

Es posible para servidores NuGet privados. Use el comando NuGet delete.

nuget delete MyPackage 1.0

Cuestiones relacionadas