2012-07-25 27 views
10

Ho aggiunto un nuovo pacchetto a nuget (non sto parlando di aggiungere il riferimento del pacchetto nel progetto). Ho aggiunto nuovi pacchetti al server in modo che altri possano consumare/utilizzare quel pacchetto nei loro progetti.Come rimuovere NuGet Package dal server?

Say nome del pacchetto è stato Parser1.0.0.0.nupkg

Il problema è che ho dimenticato di aggiungere una dipendenza. Ora voglio modificare o eliminare e aggiungere di nuovo quello corretto. Ma non voglio cambiare il suo numero di versione.

Qualcuno sa come farlo?

risposta

14

L'eliminazione definitiva dei pacchetti non è supportata, ma è possibile controllare il modo in cui sono elencati. (presumendo che tu stia parlando di nuget.org).

Dopo aver effettuato l'accesso, vi sono ulteriori informazioni sulla pagina del pacchetto di eliminazione. per esempio. https://nuget.org/packages/Parser/1.0.0.0/Delete.

Citando la spiegazione di NuGet dalla pagina pacchetto di eliminazione:?

"Perché non posso eliminare il mio pacchetto nostra politica è di solo eliminare definitivamente i pacchetti Nuget che ne hanno davvero bisogno, come ad esempio pacchetti che contengono le parole d'accesso, dannosi/codice dannoso, ecc. Questa politica è molto simile alle politiche impiegate da altri gestori di pacchetti come Ruby Gems

L'esclusione del pacchetto rimuove il pacchetto dalla disponibilità nel NuGet. Il pacchetto è ancora disponibile per il download come una dipendenza per tre motivi principali:

Altri pacchetti possono dipendere da quel pacchetto. Questi pacchetti potrebbero non essere necessariamente in questa galleria. Assicura che le persone che utilizzano NuGet senza l'invio di pacchetti (ripristino del pacchetto) non vengano interrotte. aiuta a garantire che importanti comunità di pacchetti di proprietà non vengono cancellati di massa."

Vorrei suggerire unlisting il pacchetto precedente e urtare la versione a 1.0.0.1 dopo l'aggiunta della dipendenza.

+0

Sì, OP non può decidere di urtare il numero di versione, ma quando si prende il pacchetto per un giro in pubblico, si deve obbedire alle regole della strada. –

7

Supponendo si amministra un server privato e NuGetGallery avere accesso al database MSSQL Server, è possibile rimuovere il pacchetto rimuovendo la conoscenza della galleria della sua esistenza

Probabilmente non si dovrebbe mai usare questo, ma nell'interesse della scienza, ecco come ignorare le buone ragioni per non (nota che questo cancellerà la versione tutta s di un pacchetto chiamato '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

per variazioni di questo script (più pacchetti, versione specifica del pacchetto): https://gist.github.com/grenade/4a8b6edcd10308a5882f) – grenade

0

Ebbene, nel vostro caso particolare è possibile aggiungere una dipendenza modificando manualmente il file .nuspec se si dispone di un accesso al server NuGet. Aprire la directory dei dati del server nuget (dove memorizza i file .nupkg), trovare il pacchetto e utilizzare lo strumento NugetPackageExplorer o modificare manualmente i metadati (il file .nupkg è un archivio zip, aprirlo e modificare il file YourPackageName.nuspec da aggiungere una dipendenza). Si sarebbe simile simile a questo:

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

Se si fa clic Elimina pacchetto nel sottomenu del pacchetto (a sinistra), si viene reindirizzati a un'altra pagina che ti dice questo:

Se è necessario il pacchetto rimosso in modo permanente, fare clic sul link Contact Support e noi ci occuperemo di esso per voi

quanto a me questo ha funzionato tutto bene, ho contattato i req supporto la rimozione del pacchetto da rimuovere perché l'ho caricata accidentalmente sul server NuGet produttivo anziché nell'ambiente di staging.

Tuttavia, consigliamo sempre di provare prima il pacchetto utilizzando staging.nuget.com. È quindi possibile aggiungere l'ambiente di staging come repository di pacchetti in Visual Studio per il test.

1

È possibile per i server NuGet privati. Utilizzare il comando Cancella NuGet.

nuget delete MyPackage 1.0

Problemi correlati