Como faço para desinstalar * todos * os pacotes nuget de uma solução no Visual Studio


Respostas:


135

Para obter todos os pacotes de todos os projetos no uso da solução Get-Package. Para obter todos os pacotes de um uso de projeto específico Get-Package -ProjectName "YourProjectName".


Remova todos os pacotes de todos os projetos da solução

Cuidado: Isso desinstalará TODOS os pacotes da solução . Se o -Forceparâmetro for usado, os pacotes serão removidos mesmo que existam dependências.

Get-Package | Uninstall-Package -RemoveDependencies -Force


Remova todos os pacotes de um projeto específico dentro de uma solução

Cuidado: Isso desinstalará TODOS os pacotes do projeto . Se o -Forceparâmetro for usado, os pacotes serão removidos mesmo que existam dependências.

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

27
Eu recomendo adicionar o parâmetro -Force no final. Sem ele, não consigo desinstalar todas as minhas dependências com base nas dependências de outros pacotes NuGet.
Sean Stayns

Esta é a verdadeira resposta. Combinado com a sugestão de uso de Sean -force. Isso funcionou para mim.
Spikee

86

No console do gerenciador de pacotes, basta digitar:

get-package | desinstalar-pacote -removedependencies


14
Para não ficar preso em um gráfico de dependência complexo, use -Forceswitch.
Alireza

12
AVISO: Este comendamento irá desinstalar todos os pacotes dentro de toda a SOLUÇÃO.
Jacob

31

tente isto:

get-package | uninstall-package -removedependencies -force

15

Se você deseja desinstalar todos os pacotes NuGet de todos os projetos em uma solução, use isso no console do gerenciador de pacotes 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
Ótima resposta. Roteiro para um único projeto:$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
Mohsen Afshin

10

Usar o parâmetro -Force no meu caso deixou modificações no arquivo do projeto e referências a alguns binários que deveriam ter sido removidos ao desinstalar normalmente os pacotes.

Aqui está um método ingênuo para desinstalar todos os pacotes de projetos específicos sem usar o parâmetro -Force. Efetivamente, ele tenta desinstalar os pacotes repetidamente até que não haja mais pacotes, então você verá alguns erros mencionando pacotes dependentes (se os tiver), mas eles aparecerão cada vez menos conforme os pacotes folha forem removidos a cada iteração.

Também vale a pena mencionar que testei apenas os seguintes snippets do PowerShell no console PackageManager. ("Ferramentas> Gerenciador de pacotes NuGet> Console do gerenciador de pacotes")

Desinstale todos os pacotes de todos os projetos em uma solução

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

Remova apenas projetos que contenham a palavra " 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 }

Observe que se você tiver outro problema além dos pacotes dependentes que impedem a desinstalação do pacote, este snippet será executado para sempre até que você o interrompa manualmente.


3

Eu não acredito que isso seja possível, então desinstale TODOS os pacotes de uma vez. No entanto, como você já indicou, você pode desinstalar um pacote, mas também pode instruí-lo a desinstalar suas dependências fazendo o seguinte:

Desinstalar pacote OpenIdPortableArea –RemoveDependencies

Aqui está um blog de Marcus Hammarberg explicando isso: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html


3
"Remover dependências" funciona quando um pacote depende de muitos outros. Não funciona quando N pacotes dependem do núcleo (por exemplo, Boost). Você precisa remover os pacotes NuGet Boost manualmente um por um, o que é uma dor.
quant_dev

1

Atualizado um script para remover todos os pacotes nuget para um único projeto na solução VS:

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

0

Fictício da velha escola para loop:

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

0

Restauração automática (desinstale e instale) de pacotes em um projeto usando o Console do gerenciador de pacotes:

Update-Package -Reinstall

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.