So di poter disinstallare il pacchetto dalla console PM. Ho riscontrato problemi di dipendenza con un altro progetto e voglio ricominciare da capo, e devo eliminare tutti i pacchetti in una volta. C'è un modo?
Risposte:
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"
.
Attenzione: questo disinstallerà TUTTI i pacchetti nella soluzione . Se
-Force
viene utilizzato il parametro, i pacchetti vengono rimossi anche se esistono dipendenze.
Get-Package | Uninstall-Package -RemoveDependencies -Force
Fai attenzione: questo disinstallerà TUTTI i pacchetti nel progetto . Se
-Force
viene utilizzato il parametro, i pacchetti vengono rimossi anche se esistono dipendenze.
Get-Package -ProjectName "YourProjectName" |
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force
-force
. Questo ha funzionato per me.
Nella console di Gestione pacchetti basta digitare:
get-pacchetto | disinstallare-pacchetto -removedependencies
-Force
switch.
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} }
$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
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.
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
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}
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++
}
}