PM konsolundan paketi kaldırabileceğimi biliyorum. Başka bir projeyle bazı bağımlılık sorunları yaşadım ve yeniden başlamak istiyorum ve tüm paketleri tek seferde silmem gerekiyor. Bir yolu var mı?
Yanıtlar:
Çözüm kullanımında tüm projelerden tüm paketleri almak Get-Package
. Tüm paketleri belirli bir projeden almak için kullanın Get-Package -ProjectName "YourProjectName"
.
Dikkatli olun: Bu , çözümdeki TÜM paketleri kaldıracaktır . Eğer parametre kullanılan olduğunu, paketler bağımlılık mevcut olsa bile kaldırılır.
-Force
Get-Package | Uninstall-Package -RemoveDependencies -Force
Dikkatli olun: Bu , projedeki TÜM paketleri kaldıracaktır . Eğer parametre kullanılan olduğunu, paketler bağımlılık mevcut olsa bile kaldırılır.
-Force
Get-Package -ProjectName "YourProjectName" |
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force
-force
. Bu benim için çalıştı.
Çözümdeki her Projeden her NuGet Paketini kaldırmak istiyorsanız, bunu NuGet Paket Yöneticisi Konsolunda kullanın:
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}
Benim durumumda -Force parametresini kullanmak, normalde paketleri kaldırırken kaldırılması gereken bazı ikili dosyalara proje dosyası değişiklikleri ve referanslar bıraktı.
-Force parametresini kullanmadan belirli projelerden tüm paketleri kaldırmak için saf bir yöntem. Etkili bir şekilde, kalan paket kalmayana kadar paketleri tekrar tekrar kaldırmaya çalışır, bu nedenle bağımlı paketlerden bahseden bazı hatalar görürsünüz (bunlara sahipseniz), ancak yaprak paketleri her yinelemede kaldırıldıkça daha az ortaya çıkacaktır.
Ayrıca bahsetmeye değer, yalnızca aşağıdaki PowerShell parçacıklarını PackageManager konsolunda test ettim. ("Araçlar> NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu")
Bir çözümdeki tüm projelerden tüm paketleri kaldırın
while((Get-Project -All | Get-Package).Length -gt 0) { Get-Project -All | Get-Package | Uninstall-Package }
Yalnızca " WildCardSearch " kelimesini içeren Projeleri kaldırın
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 }
Paketin kaldırılmasını engelleyen bağımlı paketler dışında başka bir sorununuz varsa, bu kod parçacığını siz manuel olarak durdurana kadar sonsuza kadar çalışacağını unutmayın.
Bunun mümkün olduğuna inanmıyorum, bu yüzden TÜM paketleri bir kerede kaldırın. Ancak, daha önce belirttiğiniz gibi bir paketi kaldırabilirsiniz, ancak aşağıdakileri yaparak bağımlılıklarını kaldırmasını da söyleyebilirsiniz:
OpenIdPortableArea -RemoveDependencies Paketini Kaldırma
İşte Marcus Hammarberg tarafından bunu açıklayan bir blog: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html
VS çözümünde tek bir proje için tüm nuget paketlerini kaldırmak için bir komut dosyası güncellendi:
$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}
Döngü için kukla eski okul:
$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++
}
}