Saya tahu saya dapat menghapus paket dari konsol PM. Saya mengalami beberapa masalah ketergantungan dengan proyek lain dan saya ingin memulai kembali, dan saya perlu menghapus semua paket dalam satu kesempatan. Apakah ada jalan
Jawaban:
Untuk mendapatkan semua paket dari semua proyek dalam penggunaan solusi Get-Package
. Untuk mendapatkan semua paket dari penggunaan proyek tertentu Get-Package -ProjectName "YourProjectName"
.
Hati-hati: Ini akan menghapus SEMUA paket dalam solusi . Jika
-Force
parameter digunakan, paket akan dihapus meskipun dependensi ada.
Get-Package | Uninstall-Package -RemoveDependencies -Force
Hati-hati: Ini akan menghapus SEMUA paket dalam proyek . Jika
-Force
parameter digunakan, paket akan dihapus meskipun dependensi ada.
Get-Package -ProjectName "YourProjectName" |
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force
-force
. Ini berhasil untuk saya.
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} }
$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
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.
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
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++
}
}
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}