Je sais que je peux désinstaller le package de la console PM. J'ai eu des problèmes de dépendance avec un autre projet et je veux recommencer, et je dois supprimer tous les packages d'un seul coup. Y a-t-il un moyen?
Réponses:
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"
.
Attention: cela désinstallera TOUS les packages de la solution . Si le
-Force
paramètre est utilisé, les packages sont supprimés même s'il existe des dépendances.
Get-Package | Uninstall-Package -RemoveDependencies -Force
Attention: cela désinstallera TOUS les packages du projet . Si le
-Force
paramè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
-force
. Cela a fonctionné pour moi.
Dans la console du gestionnaire de package, tapez simplement:
get-package | désinstaller-package -removedependencies
-Force
switch.
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} }
$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
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.
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
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++
}
}
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}