Visual Studio'daki bir çözümden * tüm * nuget paketlerini nasıl kaldırırım


Yanıtlar:


135

Çö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".


Çözümdeki tüm projelerden tüm paketleri kaldırın

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


Bir çözümdeki belirli bir projeden tüm paketleri kaldırın

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

27
Sonuna -Force parametresini eklemenizi öneririm. Bu olmadan, diğer NuGet paketleriyle olan bağımlılıklara dayalı tüm bağımlılıklarımı kaldıramıyorum.
Sean,

Bu gerçek cevap. Sean'ın kullanım önerisiyle birleştirildi -force. Bu benim için çalıştı.
Spikee

86

Paket Yöneticisi Konsolu'na şunu yazın:

get-paketi | kaldırma paketi kaldırma bağımlılıkları


14
Karmaşık bağımlılık grafiğine takılıp kalmamak için -Forceswitch'i kullanın .
Alireza

12
UYARI: Bu öneri tüm ÇÖZÜM içindeki tüm paketleri kaldıracaktır.
Jacob

31

bunu dene:

get-package | uninstall-package -removedependencies -force

15

Çö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} }

4
Mükemmel cevap. Tek bir proje için senaryo:$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
Mohsen Afshin

10

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.


3

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


3
"Bağımlılıkları kaldır", 1 paket diğerlerine bağlı olduğunda çalışır. N paket çekirdek olana bağlı olduğunda çalışmaz (örn. Boost). NuGet Boost paketlerini manuel olarak tek tek kaldırmanız gerekir, bu bir acıdır.
quant_dev

1

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}

0

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

0

Paket Yöneticisi Konsolu kullanılarak bir projedeki paketlerin otomatik olarak geri yüklenmesi (kaldırıp ardından):

Güncelleme Paketi - Yeniden Yükle

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.