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


Réponses:


132

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: cela désinstallera TOUS les packages de la solution . Si le -Forceparamètre 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 packages du projet . Si le -Forceparamètre 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

27
Je recommande d'ajouter le paramètre -Force à la fin. Sans cela, je ne peux pas désinstaller toutes mes dépendances basées sur des dépendances avec d'autres packages NuGet.
Sean Stayns

C'est la vraie réponse. Combiné avec la suggestion de Sean à utiliser -force. Cela a fonctionné pour moi.
Spikee

86

Dans la console du gestionnaire de package, tapez simplement:

get-package | désinstaller-package -removedependencies


14
Pour ne pas rester coincé dans un graphe de dépendances complexe, utilisez -Forceswitch.
Alireza

12
AVERTISSEMENT: cette recommandation désinstallera tous les paquets de toute la SOLUTION.
Jacob

31

essaye ça:

get-package | uninstall-package -removedependencies -force

15

Si vous souhaitez désinstaller chaque package NuGet de chaque projet d'une solution, utilisez ceci dans la console du gestionnaire de package 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
Très bonne réponse. Script pour un seul projet:$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
Mohsen Afshin

10

L'utilisation du paramètre -Force dans mon cas a laissé des modifications du fichier de projet et des références à certains 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. En fait, il essaie de désinstaller les paquets encore et encore jusqu'à ce qu'il ne reste plus de paquets, vous verrez donc des erreurs mentionnant des paquets dépendants (si vous en avez) mais ils apparaîtront de moins en moins à mesure que les paquets feuilles 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 package NuGet> Console du gestionnaire de package")

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 }

Supprimer 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 la désinstallation du package, cet extrait de code sera exécuté pour toujours jusqu'à ce que vous l'arrêtiez manuellement.


3

Je ne crois pas que cela soit possible, alors désinstallez TOUS les packages à la fois. Cependant, comme vous l'avez déjà indiqué, vous pouvez désinstaller un package, mais vous pouvez également lui dire de désinstaller ses dépendances en procédant comme suit:

Désinstaller-Package OpenIdPortableArea –RemoveDependencies

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


3
"Supprimer les dépendances" fonctionne lorsqu'un paquet dépend de beaucoup d'autres. Cela ne fonctionne pas lorsque N packages dépendent du core (par exemple Boost). Vous devez supprimer les packages NuGet Boost manuellement un par un, ce qui est pénible.
quant_dev

1

Dummy old-school 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

Mise à jour d'un script pour supprimer tous les packages nuget pour un seul projet dans la solution VS:

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

0

Restauration automatique (désinstallation puis installation) des packages dans un projet à l'aide de la console du gestionnaire de packages:

Update-Package -Réinstaller

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.