Tôi biết tôi có thể gỡ cài đặt gói khỏi bảng điều khiển PM. Tôi gặp phải một số vấn đề phụ thuộc với một dự án khác và tôi muốn bắt đầu lại, và tôi cần xóa tất cả các gói trong một lần. Là có một cách?
Câu trả lời:
Để nhận được tất cả các gói từ tất cả các dự án trong việc sử dụng giải pháp Get-Package
. Để có được tất cả các gói từ một dự án sử dụng cụ thể Get-Package -ProjectName "YourProjectName"
.
Hãy cẩn thận: Thao tác này sẽ gỡ cài đặt TẤT CẢ các gói trong giải pháp . Nếu
-Force
tham số được sử dụng, các gói sẽ bị loại bỏ ngay cả khi tồn tại các phụ thuộc.
Get-Package | Uninstall-Package -RemoveDependencies -Force
Hãy cẩn thận: Thao tác này sẽ gỡ cài đặt TẤT CẢ các gói trong dự án . Nếu
-Force
tham số được sử dụng, các gói sẽ bị loại bỏ ngay cả khi tồn tại các phụ thuộc.
Get-Package -ProjectName "YourProjectName" |
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force
-force
. Điều này đã làm việc cho tôi.
Nếu bạn muốn gỡ cài đặt mọi Gói NuGet khỏi mọi Dự án trong Giải pháp, thì hãy sử dụng điều này trong Bảng điều khiển Trình quản lý Gói 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}
Việc sử dụng tham số -Force trong trường hợp của tôi đã để lại các sửa đổi tệp dự án và tham chiếu đến một số tệp nhị phân mà lẽ ra phải được gỡ bỏ khi gỡ cài đặt gói thông thường.
Đây là một phương pháp đơn giản để gỡ cài đặt tất cả các gói khỏi các dự án cụ thể mà không cần sử dụng tham số -Force. Hiệu quả là nó cố gắng gỡ cài đặt các gói lặp đi lặp lại cho đến khi không còn gói nào, vì vậy bạn sẽ thấy một số lỗi đề cập đến các gói phụ thuộc (nếu có) nhưng chúng sẽ ngày càng ít xuất hiện khi các gói lá bị xóa mỗi lần lặp lại.
Cũng đáng nói hơn là tôi chỉ thử nghiệm các đoạn mã PowerShell sau trong bảng điều khiển PackageManager. ("Công cụ> Trình quản lý gói NuGet> Bảng điều khiển Trình quản lý gói")
Gỡ cài đặt tất cả các gói khỏi tất cả các dự án trong một giải pháp
while((Get-Project -All | Get-Package).Length -gt 0) { Get-Project -All | Get-Package | Uninstall-Package }
Chỉ xóa các Dự án có chứa từ " 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 }
Lưu ý rằng nếu bạn gặp sự cố khác ngoài các gói phụ thuộc ngăn việc gỡ cài đặt gói, đoạn mã này sẽ chạy vĩnh viễn cho đến khi bạn dừng nó theo cách thủ công.
Tôi không tin rằng điều này có thể thực hiện được vì vậy hãy bỏ cài đặt TẤT CẢ các gói cùng một lúc. Tuy nhiên, như bạn đã chỉ ra rằng bạn có thể hủy cài đặt một gói, nhưng bạn cũng có thể yêu cầu nó bỏ cài đặt các phần phụ thuộc của nó bằng cách sau:
Uninstall-Package OpenIdPortableArea –RemoveDependencies
Đây là một blog của Marcus Hammarberg giải thích điều này: 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++
}
}
Đã cập nhật một tập lệnh để xóa tất cả các gói nuget cho một dự án trong giải pháp VS:
$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}