Eu sei que posso desinstalar o pacote do console PM. Tive alguns problemas de dependência com outro projeto e quero começar de novo, e preciso excluir todos os pacotes de uma vez. Há algum caminho?
Respostas:
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"
.
Cuidado: Isso desinstalará TODOS os pacotes da solução . Se o
-Force
parâmetro for usado, os pacotes serão removidos mesmo que existam dependências.
Get-Package | Uninstall-Package -RemoveDependencies -Force
Cuidado: Isso desinstalará TODOS os pacotes do projeto . Se o
-Force
parâmetro for usado, os pacotes serão removidos mesmo que existam dependências.
Get-Package -ProjectName "YourProjectName" |
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force
-force
. Isso funcionou para mim.
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} }
$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
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.
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
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}
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++
}
}