¿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

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


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

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} }

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.


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


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++
    }
}

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}

0

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

Paquete de actualización: reinstalar

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.