Come posso eliminare i pacchetti NuGet a cui non fa riferimento alcun progetto nella mia soluzione?


141

In qualche modo durante l'aggiornamento a VS2012 e .NET 4.5, sono riuscito a confondere NuGet. Esistono pacchetti che appaiono nel gestore dei pacchetti (e nella cartella dei pacchetti) che non posso eliminare (credo che siano pacchetti NuGet ASP.NET legacy che sono stati sostituiti con nuovi nomi di pacchetto con la nuova versione. Ognuno di essi ha solo un pulsante Gestisci - ma nessun pulsante di disinstallazione. Quando guardi per vedere dove vengono utilizzati, puoi vedere che non fanno riferimento a nessuno dei progetti della soluzione? NON visualizzano una disinstallazione?

Risposte:


108

È possibile utilizzare la Console di gestione pacchetti con il comando: Uninstall-Package PackageIdper rimuoverlo o semplicemente eliminare la cartella del pacchetto dalla cartella "pacchetti" nella cartella della soluzione. Ulteriori informazioni sulla console di Package Manager sono disponibili qui: http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference


8
Grazie Pavel. Ho avuto la sensazione che potresti semplicemente eliminare le cartelle. È un po 'sconcertante perché devo assicurarmi manualmente che nessuno dei pacchetti sia referenziato (non sembrano essere). Sono ancora curioso di sapere perché il gestore pacchetti non mostra un pulsante Disinstalla (o rimuovi).
Howard Pinsley,

2
Il gestore pacchetti a livello di soluzione visualizza tutti i riferimenti dei pacchetti ai progetti dalla soluzione e tutti i pacchetti aggiuntivi inseriti nella cartella dei pacchetti, ma a cui non viene fatto riferimento. Per questi pacchetti nessuna possibilità di disinstallazione nell'interfaccia utente. Sono d'accordo che è il risultato di un comportamento errato, ma in questo caso è necessario verificarlo manualmente. E cancella il pacchetto o reinstallalo quando sarai sicuro di averne bisogno o no.
Pavel Bakshy,

1
Semplicemente rimuovendo la cartella e tornando a NuGet e vedendo il pacchetto, in qualche modo viene comunque visualizzato come installato con il segno di spunta verde accanto, meglio fare la disinstallazione corretta usando la console.
k80sg,

1
@ysrb, è un comando powershell che va verb-noun come get-user o remove-item, il tuo esempio è sostantivo-verb
Nick Young

1
@ysrb Come dice Nick Young, e inoltre, sarebbe un complimento orrendo Install-Package.
ProfK

159

Ho trovato una soluzione per questo.

  1. Abilita il ripristino del pacchetto e il controllo automatico (Opzioni / Gestione pacchetti / Generale)
  2. Elimina l'intero contenuto della cartella dei pacchetti (nel Cestino se sei nervoso!)
  3. Gestire i pacchetti Nuget per la soluzione
  4. Fai clic sul pulsante Ripristina.

NuGet ripristinerà solo i pacchetti utilizzati nella soluzione. Finisci con un bel set di pacchetti semplificato.


1
Questo non rimuoverà il pacchetto packages.confige non rimuoverà i riferimenti dal progetto?
CodeCaster

1
@CodeCaster difficile analizzare il tuo doppio negativo. Nulla verrà rimosso dalla configurazione e dai riferimenti. L'idea qui è quella di rimuovere i pacchetti NuGet che non fanno più riferimento
James L

1
Risposta eccellente! Se si utilizza TFS, è necessario eliminare prima tutto il contenuto all'interno di ./packages in countrol explorer di origine, in modo che anche altri client come le macchine di costruzione rimuovano gli elementi ridondanti.
Alexander Schmidt,

4
@ sprinter252, se si utilizza il ripristino del pacchetto, non è necessario innanzitutto controllare i pacchetti nel controllo del codice sorgente. Questo è uno dei principali vantaggi dell'utilizzo del ripristino del pacchetto. Come parte della conversione al ripristino del pacchetto, una regola 'ignora' dovrebbe essere posizionata nella cartella dei pacchetti.
Carl Bussema,

@CarlBussema Hai ragione. Poiché la nuova versione di NuGet non è così importante perché Nuget non aggiungerà alcun binario nelle sottocartelle. Quindi stai solo ottenendo la struttura delle cartelle. Il mio commento era correlato al comportamento predefinito di TFS (cartella-pacchetti inclusa). Su TFS Anywhere gli ignori vengono ignorati spesso ;-). Importante per progetti misti con Xamarin.
Alexander Schmidt,

17

Per prima cosa apri la Console di gestione pacchetti. Quindi seleziona il tuo progetto dall'elenco a discesa. Ed esegui i seguenti comandi per disinstallare i pacchetti nuget.

Get-Package

per ottenere tutto il pacchetto che hai installato.

e poi

Uninstall-Package PagedList.Mvc

--- per disinstallare un pacchetto chiamato PagedList.MVC

Messaggio

PM> Uninstall-Package PagedList.Mvc
Successfully removed 'PagedList.Mvc 4.5.0.0' from MCEMRBPP.PIR.

Questa risposta ha funzionato perfettamente per me. La mia situazione era che il pacchetto veniva visualizzato solo nella scheda Aggiornamenti della finestra di dialogo ... e quando premevo Aggiorna nessun progetto aveva il pacchetto installato, quindi non c'era modo di aggiornarlo o rimuoverlo.
Azarc3,

8

Se vuoi eliminare / disinstallare il pacchetto Nuget che viene applicato a più progetti nelle tue soluzioni, vai a:

  1. Strumenti-> Nuget Package Manager -> Gestisci i pacchetti Nuget per la soluzione

  2. Nella colonna di sinistra dove si trova "Pacchetti installati" seleziona "Tutti", in modo da visualizzare un elenco di pacchetti installati e un pulsante Gestisci su di essi.

  3. Seleziona il pulsante Gestisci e otterrai un pop-up, deseleziona la casella di controllo tra il nome del progetto e Ok

Il resto del lavoro Package Manager lo farà per te.


1
Questa è sicuramente la risposta che stavo cercando, grazie!
Sal

3

Se hai rimosso il pacchetto utilizzando l' utility Uninstall-Package e hai eliminato il pacchetto desiderato dalla directory del pacchetto in soluzione (e stai ancora riscontrando errori), apri il file * .csproj nell'editor di codice e rimuovi il tag manualmente. Come ad esempio, volevo eliminare il pacchetto Nuget Xamarin.Forms.Alias e ho rimosso queste righe dal file * .csproj.

Rimozione del pacchetto nuget dallo script msbuild

E infine, non dimenticare di ricaricare il progetto una volta richiesto in Visual Studio (dopo aver modificato il file di progetto). L'ho provato su Visual Studio 2015, ma dovrebbe funzionare anche su Visual Studio 2010 e versioni successive.

Spero che questo ti aiuti.


2

Un'alternativa è installare il pacchetto inutilizzato che si desidera eliminare in qualsiasi progetto della soluzione, dopodiché disinstallarlo e anche Nuget lo rimuoverà.

È necessario un programma di disinstallazione corretto qui.


C'è un modo per farlo disinstallare correttamente senza reinstallarlo?
Knox,

2

Soluzione 1

Utilizzare la pipeline PowerShell per ottenere i pacchetti e rimuoverli in una singola istruzione come questa

Get-Package | Uninstall-Package

Soluzione 2

se vuoi disinstallare i pacchetti selezionati segui questi passaggi

  1. Utilizzare GetPackagesper ottenere l'elenco dei pacchetti
  2. Scarica il software di testo Nimble
  3. Copia l'output di GetPackagesin NimbleText (per ogni riga nella finestra dell'elenco)
  4. Impostare Seperator colonna su (se necessario
  5. Tipo Uninstall-Package $0(Sostituisci usando la finestra del modello)
  6. Copia i risultati e incollali in Package Manage Console

Questa è tutta gente.


1

Un pacchetto NuGet può fare riferimento a un altro pacchetto NuGet. Quindi, si prega di fare molta attenzione alle dipendenze tra pacchetti. Ho appena disinstallato un pacchetto di mappe di Google e successivamente ha disinstallato i pacchetti sottostanti come Newtonsoft, Entity Framework, ecc.

Pertanto, l'eliminazione manuale di determinati pacchetti dalla cartella dei pacchetti sarebbe più sicura.


1

Dalla finestra della console di Package Manager, spesso è possibile utilizzare qualsiasi comando utilizzato per installare un pacchetto per disinstallare quel pacchetto. Sostituisci semplicemente il comando INSTALL con UNINSTALL .

Ad esempio, per installare PowerTCPTelnet, il comando è:

Install-Package PowerTCPTelnet -Version 4.4.9

Per disinstallare lo stesso, il comando è:

Uninstall-Package PowerTCPTelnet -Version 4.4.9


1

VS2019> Strumenti> Opzioni> Nuget Package Manager> Generale> Fare clic su "Cancella tutte le cache Nuger"


-2

Altrimenti, e molto semplicemente per me è:

  1. Vai al tuo Soution e quindi fai clic destro su questo.

  2. Seleziona l'opzione "Managed NUgets Packages for Solution". Che apre una finestra popup, in quel clic sul pulsante "Impostazioni". Questo aprirà un'altra finestra pop-up e quindi cercherà: "Gestione pacchetti".

  3. All'interno dell'opzione "Gestione pacchetti" ci sono altre due opzioni (I. Generale II. Fonti pacchetti) In ciascuna opzione deseleziona la casella di controllo.

Questa procedura disattiva NuGet dal tuo progetto.

Spero davvero di aiutarti.


-2

Se si desidera utilizzare l'opzione di Visual Studio, vedere il collegamento seguente

http://spvenky.wordpress.com/2014/08/10/how-to-remove-nuget-packages-from-existing-visual-studio-solution/

Passaggio 1: In Visual Studio, vai su Strumenti / Gestione pacchetti NuGet / Gestisci pacchetti NuGet per soluzione ...

Passaggio 2: Deseleziona i tuoi progetti dalla soluzione corrente

Passaggio 3: deselezionare i progetti e premere OK


2
È preferibile scrivere la risposta in StackOverflow piuttosto che pubblicare un collegamento perché i collegamenti potrebbero scadere in futuro.
Amadeus Sánchez,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.