Sé que puedo desinstalar el paquete desde la consola PM. Tuve algunos problemas de dependencia con otro proyecto y quiero comenzar de nuevo, y necesito eliminar todos los paquetes de una sola vez. ¿Hay alguna manera?
Respuestas:
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"
.
Tenga cuidado: esto desinstalará TODOS los paquetes de la solución . Si
-Force
se utiliza un parámetro, los paquetes se eliminan incluso si existen dependencias.
Get-Package | Uninstall-Package -RemoveDependencies -Force
Tenga cuidado: esto desinstalará TODOS los paquetes del proyecto . Si
-Force
se utiliza un parámetro, los paquetes se eliminan incluso si existen dependencias.
Get-Package -ProjectName "YourProjectName" |
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force
-force
. Esto funcionó para mí.
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} }
$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
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.
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
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++
}
}
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}