web-dev-qa-db-fra.com

Comment désinstaller * tous * les packages de nuget d'une solution dans Visual Studio

Je sais que je peux désinstaller-package de la console PM. J'ai eu quelques problèmes de dépendance avec un autre projet et je veux recommencer, et je dois supprimer tous les packages en une fois. Y at-il une façon?

73
dgorti

Pour obtenir tous les packages de tous les projets de la solution, utilisez Get-Package. Pour obtenir tous les packages d'un projet spécifique, utilisez Get-Package -ProjectName "YourProjectName".


Supprimer tous les packages de tous les projets de la solution

Attention, ceci désinstallera TOUS LES paquets dans solution. Si le paramètre -Force Est utilisé, les packages sont supprimés même s'il existe des dépendances.

Get-Package | Uninstall-Package -RemoveDependencies -Force


Supprimer tous les packages d'un projet spécifique dans une solution

Attention, cela désinstallera TOUS LES paquets du projet. Si le paramètre -Force Est utilisé, les packages sont supprimés même s'il existe des dépendances.

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

Dans la console du gestionnaire de packages, tapez simplement:

get-package | uninstall-package -removedependencies

82
Vladimir Zalmanek

essaye ça:

get-package | uninstall-package -removedependencies -force
28
AHA

Si vous souhaitez désinstaller chaque package NuGet de chaque projet d'une solution, utilisez-le dans la console NuGet Package Manager:

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

L'utilisation du paramètre -Force dans mon cas a laissé des modifications de fichier de projet et des références à des fichiers binaires qui auraient dû être supprimés lors de la désinstallation normale des packages.

Voici une méthode naïve pour désinstaller tous les packages de projets spécifiques sans utiliser le paramètre -Force. Effectivement, il essaie de désinstaller les paquetages encore et encore jusqu'à ce qu'il ne reste plus de paquetages. Vous verrez donc des erreurs mentionnant des paquets dépendants (si vous les avez), mais elles apparaîtront de moins en moins au fur et à mesure que les paquets terminaux seront supprimés à chaque itération.

Il convient également de mentionner que je n’ai testé que les extraits de code PowerShell suivants dans la console PackageManager. ("Outils> Gestionnaire de paquets NuGet> Console du gestionnaire de paquets")

désinstaller tous les packages de tous les projets d'une solution

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

Supprimez uniquement les projets contenant le mot " 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 }

Notez que si vous rencontrez un autre problème en dehors des packages dépendants empêchant une désinstallation du package, cet extrait de code sera exécuté de manière permanente jusqu'à ce que vous l'arrêtiez manuellement.

9
Nathan

Je ne crois pas que cela soit possible, alors désinstallez TOUS les paquets en même temps. Cependant, comme vous l'avez déjà indiqué, vous pouvez désinstaller un paquet, mais vous pouvez également lui demander de désinstaller ses dépendances en procédant comme suit:

Uninstall-Package OpenIdPortableArea –RemoveDependencies

Voici un blog de Marcus Hammarberg expliquant ceci: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html

2
loan.burger

Mannequin vieille école pour boucle:

$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
Teoman shipahi