Подтвердить что ты не робот

Как удалить * все * пакеты nuget из решения в Visual Studio

Я знаю, что я могу удалить пакет с консоли PM. Я столкнулся с некоторыми проблемами зависимости с другим проектом и я хочу начать все заново, и мне нужно удалить все пакеты за один снимок. Есть ли способ?

4b9b3361

Ответ 1

В консоли диспетчера пакетов просто введите:

get-package | uninstall-package -removedependencies

Ответ 2

Чтобы получить все пакеты из всех проектов в решении, используйте Get-Package. Чтобы получить все пакеты из определенного проекта, используйте Get-Package -ProjectName "YourProjectName".


Удалить все пакеты из всех проектов в решении

Будьте осторожны: это удалит ВСЕ пакеты в решении. Если -Force параметр -Force, пакеты удаляются, даже если существуют зависимости.

Get-Package | Uninstall-Package -RemoveDependencies -Force


Удалить все пакеты из определенного проекта в решении

Будьте осторожны: это удалит ВСЕ пакеты в проекте. Если -Force параметр -Force, пакеты удаляются, даже если существуют зависимости.

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

Ответ 3

попробуйте следующее:

get-package | uninstall-package -removedependencies -force

Ответ 4

Если вы хотите удалить каждый пакет NuGet из каждого проекта в решении, используйте его в консоли диспетчера пакетов NuGet:

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

Ответ 5

Использование параметра -Force в моем случае приводит к модификации файлов проекта и ссылок на некоторые двоичные файлы, которые должны были быть удалены при нормальной деинсталляции пакетов.

Вот наивный метод удаления всех пакетов из определенных проектов без использования параметра -Force. Эффективно он пытается удалить пакеты снова и снова, пока не осталось пакетов, поэтому вы увидите некоторые ошибки с упоминанием зависимых пакетов (если они есть у вас), но они будут становиться все меньше и меньше, поскольку листовые пакеты удаляются с каждой итерации.

Также стоит упомянуть, что я тестировал только следующие фрагменты PowerShell в консоли PackageManager. ( "Инструменты > Диспетчер пакетов NuGet > Консоль диспетчера пакетов" )

Удалите все пакеты из всех проектов в решении

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

Удалить проекты, содержащие слово "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 }

Обратите внимание, что если у вас есть другая проблема, кроме зависимых пакетов, которые препятствуют удалению пакета, этот фрагмент будет запускаться вечно, пока вы не остановите его вручную.

Ответ 6

Я не верю, что это возможно, поэтому сразу удалите ВСЕ пакеты. Однако, как вы уже указали, вы можете удалить пакет, но вы также можете указать ему, чтобы установить его зависимости, выполнив следующие действия:

Uninstall-Package OpenIdPortableArea -RemoveDependencies

Вот блог Маркуса Хаммарберга, поясняющий это: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html

Ответ 7

Манекен старой школы для цикла:

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