ฉันรู้ว่าฉันสามารถถอนการติดตั้งแพ็คเกจจากคอนโซล PM ได้ ฉันประสบปัญหาการพึ่งพากับโปรเจ็กต์อื่นและฉันต้องการเริ่มต้นใหม่และฉันต้องการลบแพ็คเกจทั้งหมดในนัดเดียว มีวิธีไหม?
ฉันรู้ว่าฉันสามารถถอนการติดตั้งแพ็คเกจจากคอนโซล PM ได้ ฉันประสบปัญหาการพึ่งพากับโปรเจ็กต์อื่นและฉันต้องการเริ่มต้นใหม่และฉันต้องการลบแพ็คเกจทั้งหมดในนัดเดียว มีวิธีไหม?
คำตอบ:
Get-Package
ที่จะได้รับแพ็กเกจทั้งหมดจากโครงการทั้งหมดในการใช้วิธีการแก้ปัญหา Get-Package -ProjectName "YourProjectName"
ที่จะได้รับแพคเกจทั้งหมดจากการใช้โครงการเฉพาะ
ระวัง: นี้จะถอนการติดตั้งทุกแพคเกจในการแก้ปัญหา หากใช้
-Force
พารามิเตอร์แพ็กเกจจะถูกลบออกแม้ว่าจะมีการอ้างอิง
Get-Package | Uninstall-Package -RemoveDependencies -Force
ระวัง: นี้จะถอนการติดตั้งทุกแพคเกจในโครงการ หากใช้
-Force
พารามิเตอร์แพ็กเกจจะถูกลบออกแม้ว่าจะมีการอ้างอิง
Get-Package -ProjectName "YourProjectName" |
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force
-force
รวมกับข้อเสนอแนะของฌอนกับการใช้งาน สิ่งนี้ได้ผลสำหรับฉัน
ลองสิ่งนี้:
get-package | uninstall-package -removedependencies -force
หากคุณต้องการถอนการติดตั้ง NuGet Package ทั้งหมดจากทุกโครงการในโซลูชันให้ใช้สิ่งนี้ในคอนโซล NuGet Package Manager:
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}
การใช้พารามิเตอร์ -Force ในกรณีของฉันทิ้งการแก้ไขไฟล์โครงการและการอ้างอิงไปยังไบนารีบางรายการที่ควรถูกลบออกเมื่อถอนการติดตั้งแพ็กเกจตามปกติ
นี่เป็นวิธีที่ไร้เดียงสาในการถอนการติดตั้งแพ็คเกจทั้งหมดจากโปรเจ็กต์เฉพาะโดยไม่ต้องใช้พารามิเตอร์ -Force มันพยายามถอนการติดตั้งแพ็กเกจซ้ำแล้วซ้ำอีกอย่างมีประสิทธิภาพจนกว่าจะไม่มีแพ็กเกจเหลืออยู่ดังนั้นคุณจะเห็นข้อผิดพลาดบางอย่างที่กล่าวถึงแพ็กเกจที่ขึ้นต่อกัน (หากคุณมี) แต่จะเปิดขึ้นน้อยลงเรื่อย ๆ เมื่อแพ็กเกจ leaf ถูกลบการทำซ้ำแต่ละครั้ง
สิ่งที่ควรค่าแก่การกล่าวถึงฉันได้ทดสอบตัวอย่าง PowerShell ต่อไปนี้ในคอนโซล PackageManager เท่านั้น ("เครื่องมือ> NuGet Package Manager> คอนโซลตัวจัดการแพ็คเกจ")
ถอนการติดตั้งแพ็คเกจทั้งหมดจากโปรเจ็กต์ทั้งหมดในโซลูชัน
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 }
โปรดทราบว่าหากคุณมีปัญหาอื่นนอกเหนือจากแพ็กเกจที่เกี่ยวข้องซึ่งป้องกันไม่ให้ถอนการติดตั้งแพ็กเกจข้อมูลโค้ดนี้จะทำงานตลอดไปจนกว่าคุณจะหยุดด้วยตนเอง
ฉันไม่เชื่อว่าจะเป็นไปได้ดังนั้นให้ยกเลิกการติดตั้งแพ็คเกจทั้งหมดในครั้งเดียว อย่างไรก็ตามตามที่คุณระบุไว้แล้วว่าคุณสามารถยกเลิกการติดตั้งแพ็กเกจได้ แต่คุณสามารถบอกให้ยกเลิกการติดตั้งการอ้างอิงได้โดยทำดังต่อไปนี้:
ถอนการติดตั้งแพ็คเกจ OpenIdPortableArea –RemoveDependencies
นี่คือบล็อกของ Marcus Hammarberg อธิบายสิ่งนี้: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html
อัปเดตสคริปต์เพื่อลบแพ็คเกจ nuget ทั้งหมดสำหรับโครงการเดียวในโซลูชัน VS:
$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}
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++
}
}
การกู้คืนอัตโนมัติ (ถอนการติดตั้งแล้วติดตั้ง) ของแพ็กเกจในโปรเจ็กต์โดยใช้ Package Manager Console:
อัปเดตแพ็คเกจ - ติดตั้งใหม่