Come si disinstalla * tutti * i pacchetti nuget da una soluzione in Visual Studio


Risposte:


135

Per ottenere tutti i pacchetti da tutti i progetti nella soluzione, utilizzare Get-Package. Per ottenere tutti i pacchetti da un progetto specifico, utilizzare Get-Package -ProjectName "YourProjectName".


Rimuovi tutti i pacchetti da tutti i progetti nella soluzione

Attenzione: questo disinstallerà TUTTI i pacchetti nella soluzione . Se -Forceviene utilizzato il parametro, i pacchetti vengono rimossi anche se esistono dipendenze.

Get-Package | Uninstall-Package -RemoveDependencies -Force


Rimuovi tutti i pacchetti da un progetto specifico all'interno di una soluzione

Fai attenzione: questo disinstallerà TUTTI i pacchetti nel progetto . Se -Forceviene utilizzato il parametro, i pacchetti vengono rimossi anche se esistono dipendenze.

Get-Package -ProjectName "YourProjectName" | 
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force

27
Consiglio di aggiungere il parametro -Force alla fine. Senza di esso, non posso disinstallare tutte le mie dipendenze in base alle dipendenze con altri pacchetti NuGet.
Sean Stayns

Questa è la vera risposta. Combinato con il suggerimento di Sean di usare -force. Questo ha funzionato per me.
Spikee

86

Nella console di Gestione pacchetti basta digitare:

get-pacchetto | disinstallare-pacchetto -removedependencies


14
Per non rimanere bloccati nel complesso grafico delle dipendenze, utilizzare -Forceswitch.
Alireza

12
ATTENZIONE: questo comando disinstallerà tutti i pacchetti all'interno dell'intera SOLUZIONE.
Jacob il

31

prova questo:

get-package | uninstall-package -removedependencies -force

15

Se vuoi disinstallare ogni pacchetto NuGet da ogni progetto in una soluzione, usalo nella console di Gestione pacchetti NuGet:

foreach($project in $projects){ $packages = Get-Package -ProjectName $project.Name; foreach($package in $packages){ Uninstall-Package -ProjectName $project.Name -Id $package.Id -Force} }

4
Bella risposta. Sceneggiatura per un singolo progetto:$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
Mohsen Afshin

10

L'uso del parametro -Force nel mio caso ha lasciato modifiche al file di progetto e riferimenti ad alcuni binari che avrebbero dovuto essere rimossi durante la normale disinstallazione dei pacchetti.

Ecco un metodo ingenuo per disinstallare tutti i pacchetti da progetti specifici senza utilizzare il parametro -Force. Effettivamente cerca di disinstallare i pacchetti più e più volte finché non ci sono pacchetti rimasti, quindi vedrai alcuni errori che menzionano i pacchetti dipendenti (se li hai) ma si presenteranno sempre meno man mano che i pacchetti foglia vengono rimossi ad ogni iterazione.

Vale anche la pena ricordare che ho testato solo i seguenti frammenti di PowerShell nella console di PackageManager. ("Strumenti> Gestione pacchetti NuGet> Console di Gestione pacchetti")

Disinstallare tutti i pacchetti da tutti i progetti in una soluzione

while((Get-Project -All | Get-Package).Length -gt 0) { Get-Project -All | Get-Package | Uninstall-Package }

Rimuovi solo i progetti contenenti la parola " WildCardSearch "

while((Get-Project -All | Where-Object ProjectName -like '*WildCardSearch*'  | Get-Package).Length -gt 0) { Get-Project -All | Where-Object ProjectName -like '*WildCardSearch*' | Get-Package | Uninstall-Package }

Nota che se hai un altro problema oltre ai pacchetti dipendenti che impediscono una disinstallazione del pacchetto, questo frammento verrà eseguito per sempre finché non lo interrompi manualmente.


3

Non credo che ciò sia possibile, quindi disinstalla TUTTI i pacchetti contemporaneamente. Tuttavia, come hai già indicato, puoi disinstallare un pacchetto, ma puoi anche dirgli di disinstallare le sue dipendenze facendo quanto segue:

Uninstall-Package OpenIdPortableArea –RemoveDependencies

Ecco un blog di Marcus Hammarberg che spiega questo: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html


3
"Rimuovi dipendenze" funziona quando 1 pacchetto dipende da molti altri. Non funziona quando N pacchetti dipendono da quello principale (es. Boost). È necessario rimuovere manualmente i pacchetti NuGet Boost uno per uno, il che è un problema.
quant_dev

1

Aggiornato uno script per rimuovere tutti i pacchetti nuget per un singolo progetto nella soluzione VS:

$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}

0

Dummy vecchia scuola per loop:

$packages = get-package
$packageId = "Apache.NMS.ActiveMQ"


$counter = 1
foreach($package in $packages){     
    if($package.Id -eq $packageId)
    {   
        Write-Host "`n$counter-Deleting Package:`n"
        $package        
        Uninstall-Package -Id $packageId -ProjectName $package.ProjectName -RemoveDependencies 
        Write-Host "`n============================================`n"
        $counter++
    }
}

0

Ripristino automatico (disinstallazione e installazione) dei pacchetti in un progetto utilizzando la console di Gestione pacchetti:

Update-Package-Reinstalla

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.