¿Cómo desinstalo * todos * los paquetes nuget de una solución en Visual Studio?

Respuestas:

132

Para obtener todos los paquetes de todos los proyectos de la solución, utilice Get-Package. Para obtener todos los paquetes de un proyecto específico, use Get-Package -ProjectName "YourProjectName".


Eliminar todos los paquetes de todos los proyectos de la solución

Tenga cuidado: esto desinstalará TODOS los paquetes de la solución . Si -Forcese utiliza un parámetro, los paquetes se eliminan incluso si existen dependencias.

Get-Package | Uninstall-Package -RemoveDependencies -Force


Eliminar todos los paquetes de un proyecto específico dentro de una solución

Tenga cuidado: esto desinstalará TODOS los paquetes del proyecto . Si -Forcese utiliza un parámetro, los paquetes se eliminan incluso si existen dependencias.

Get-Package -ProjectName "YourProjectName" | 
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force
normando
fuente
27
Recomiendo agregar el parámetro -Force al final. Sin él, no puedo desinstalar todas mis dependencias basadas en dependencias con otros paquetes NuGet.
Sean Stayns
Esta es la verdadera respuesta. Combinado con la sugerencia de uso de Sean -force. Esto funcionó para mí.
Spikee
86

En Package Manager Console, simplemente escriba:

get-package | desinstalar-paquete-eliminar dependencias

Vladimir Zalmanek
fuente
14
Para no quedarse atascado en un gráfico de dependencia complejo, use -Forceswitch.
Alireza
12
ADVERTENCIA: Este elogio desinstalará todos los paquetes dentro de la SOLUCIÓN completa.
Jacob
31

prueba esto:

get-package | uninstall-package -removedependencies -force
AHA
fuente
15

Si desea desinstalar todos los paquetes NuGet de todos los proyectos de una solución, utilice esto en la consola del administrador de paquetes NuGet:

foreach($project in $projects){ $packages = Get-Package -ProjectName $project.Name; foreach($package in $packages){ Uninstall-Package -ProjectName $project.Name -Id $package.Id -Force} }
Michal Steyn
fuente
4
Gran respuesta. Guión para un solo proyecto:$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
Mohsen Afshin
10

El uso del parámetro -Force en mi caso dejó modificaciones en el archivo del proyecto y referencias a algunos binarios que deberían haberse eliminado al desinstalar normalmente los paquetes.

Aquí hay un método ingenuo para desinstalar todos los paquetes de proyectos específicos sin usar el parámetro -Force. Efectivamente, intenta desinstalar los paquetes una y otra vez hasta que no quedan paquetes, por lo que verá algunos errores que mencionan paquetes dependientes (si los tiene), pero aparecerán cada vez menos a medida que los paquetes hoja se eliminen en cada iteración.

También vale la pena mencionar que solo probé los siguientes fragmentos de PowerShell en la consola PackageManager. ("Herramientas> Administrador de paquetes NuGet> Consola del administrador de paquetes")

Desinstale todos los paquetes de todos los proyectos en una solución

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

Elimine solo proyectos que contengan la palabra " 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 }

Tenga en cuenta que si tiene otro problema además de los paquetes dependientes que impiden la desinstalación del paquete, este fragmento se ejecutará para siempre hasta que lo detenga manualmente.

Nathan
fuente
3

No creo que esto sea posible, así que desinstale TODOS los paquetes a la vez. Sin embargo, como ya indicaste, puedes desinstalar un paquete, pero también puedes decirle que desinstale sus dependencias haciendo lo siguiente:

Uninstall-Package OpenIdPortableArea –RemoveDependencies

Aquí hay un blog de Marcus Hammarberg que explica esto: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html

préstamo.burger
fuente
3
"Eliminar dependencias" funciona cuando un paquete depende de muchos otros. No funciona cuando N paquetes dependen del núcleo (por ejemplo, Boost). Debe eliminar los paquetes NuGet Boost manualmente uno por uno, lo cual es una molestia.
quant_dev
1

Bucle falso de la vieja escuela:

$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++
    }
}
Teoman shipahi
fuente
1

Se actualizó un script para eliminar todos los paquetes nuget para un solo proyecto en la solución VS:

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

Restauración automática (desinstalar y luego instalar) de paquetes en un proyecto usando Package Manager Console:

Paquete de actualización: reinstalar

Mariusz
fuente