Я знаю, что я могу удалить пакет с консоли PM. Я столкнулся с некоторыми проблемами зависимости с другим проектом и я хочу начать все заново, и мне нужно удалить все пакеты за один снимок. Есть ли способ?
Как удалить * все * пакеты nuget из решения в Visual Studio
Ответ 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++
}
}