Bagaimana cara saya membongkar * semua * paket nuget dari solusi di Visual Studio .NET


Jawaban:


132

Untuk mendapatkan semua paket dari semua proyek dalam penggunaan solusi Get-Package. Untuk mendapatkan semua paket dari penggunaan proyek tertentu Get-Package -ProjectName "YourProjectName".


Hapus semua paket dari semua proyek dalam solusi

Hati-hati: Ini akan menghapus SEMUA paket dalam solusi . Jika -Forceparameter digunakan, paket akan dihapus meskipun dependensi ada.

Get-Package | Uninstall-Package -RemoveDependencies -Force


Hapus semua paket dari proyek tertentu dalam sebuah solusi

Hati-hati: Ini akan menghapus SEMUA paket dalam proyek . Jika -Forceparameter digunakan, paket akan dihapus meskipun dependensi ada.

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

27
Saya sarankan untuk menambahkan parameter -Force di akhir. Tanpanya, saya tidak dapat menghapus semua dependensi saya berdasarkan dependensi dengan paket NuGet lainnya.
Sean Stayns

Inilah jawaban sebenarnya. Dikombinasikan dengan saran Sean untuk digunakan -force. Ini berhasil untuk saya.
Spikee

86

Di Package Manager Console cukup ketik:

dapatkan-paket | uninstall-package -removedependencies


14
Agar tidak terjebak dalam grafik ketergantungan yang kompleks, gunakan -Forcesakelar.
Alireza

12
PERINGATAN: Perintah ini akan menghapus semua paket dalam SOLUSI secara keseluruhan.
Yakub

31

coba ini:

get-package | uninstall-package -removedependencies -force

15

Jika Anda ingin menghapus setiap Paket NuGet dari setiap Proyek dalam sebuah Solusi, gunakan ini di Konsol Pengelola Paket NuGet:

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

4
Jawaban yang bagus. Naskah untuk satu proyek:$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
Mohsen Afshin

10

Menggunakan parameter -Force dalam kasus saya meninggalkan modifikasi file proyek dan referensi ke beberapa binari yang seharusnya telah dihapus ketika biasanya menghapus paket.

Berikut adalah metode naif untuk menghapus semua paket dari proyek tertentu tanpa menggunakan parameter -Force. Secara efektif ia mencoba untuk menghapus paket-paket itu berulang-ulang sampai tidak ada paket yang tersisa, jadi Anda akan melihat beberapa kesalahan yang menyebutkan paket-paket dependen (jika Anda memilikinya) tetapi mereka akan semakin jarang muncul saat paket daun dihapus setiap iterasi.

Juga perlu disebutkan, saya hanya menguji cuplikan PowerShell berikut di konsol PackageManager. ("Tools> NuGet Package Manager> Package Manager Console")

Hapus semua paket dari semua proyek dalam sebuah solusi

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

Hanya hapus Proyek yang mengandung kata " 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 }

Perhatikan bahwa jika Anda memiliki masalah lain selain paket dependen yang mencegah penghapusan paket, cuplikan ini akan berjalan selamanya hingga Anda menghentikannya secara manual.


3

Saya tidak percaya ini mungkin jadi hapus instalasi SEMUA paket sekaligus. Namun, seperti yang telah Anda tunjukkan, Anda dapat menghapus instalasi sebuah paket, tetapi Anda juga dapat memberitahukannya untuk menghapus dependensinya dengan melakukan hal berikut:

Uninstall-Package OpenIdPortableArea –RemoveDependencies

Berikut adalah blog oleh Marcus Hammarberg yang menjelaskan hal ini: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html


3
"Hapus ketergantungan" berfungsi ketika 1 paket bergantung pada banyak paket lainnya. Ini tidak bekerja ketika paket N bergantung pada inti (mis. Boost). Anda perlu menghapus paket Boost NuGet secara manual satu per satu, yang merepotkan.
quant_dev

1

Dummy old-school for 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++
    }
}

1

Memperbarui skrip untuk menghapus semua paket nuget untuk satu proyek dalam solusi VS:

$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}

0

Memulihkan otomatis (mencopot dan memasang) paket dalam proyek menggunakan Package Manager Console:

Perbarui-Paket -Instal Ulang

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.