Làm cách nào để liệt kê tất cả các gói NuGet đã cài đặt?


94

Làm thế nào để liệt kê tất cả các gói NuGet được cài đặt cục bộ?

Có NuGet tương đương với RPM -qa? Trong Chocolateychocolatey list -localonly, nhưng đối với cuộc đời của tôi, tôi không thể tìm thấy NuGet tương đương với lệnh đó.

Câu trả lời:


95

Trong Bảng điều khiển Trình quản lý Gói NuGet , hãy nhập lệnh sau:

Get-Package

Thao tác này sẽ in ra danh sách các gói đã cài đặt hoặc nếu không có gói nào, hãy ghi dòng sau vào bảng điều khiển:

PM> Get-Package
No packages installed.

Để biết thêm chi tiết, hãy xem Tham khảo NuGet PowerShell .


12
Có cách nào để làm điều này bằng cách sử dụng nuget.exe không?
bitbonk

2
Sau khi chạy lệnh Get-Package, tên của các gói được cắt bớt khi chúng có nhiều hơn 32 đặc tính. Có thể tăng cột tên gói để đầu ra hiển thị tên đầy đủ mà không cắt bớt chúng không?
Ulysses Alves

12
Get-Package | Format-Table -AutoSizesẽ làm được
Mant101

57

Nếu bạn chỉ làm

Get-Package

nó sẽ liệt kê các gói và nơi chúng được tham chiếu. Nó sẽ liệt kê các gói giống nhau lặp đi lặp lại nếu bạn đã tham chiếu chúng nhiều lần. Nếu bạn muốn có được danh sách rõ ràng của tất cả các gói được cài đặt trong giải pháp, bạn có thể làm

Get-Package | select -Unique Id, Versions

16
Get-Package -ProjectName "Your.Project.Name"

Sẽ hiển thị các gói cho dự án được chỉ định.

Xem thêm: Tham khảo PowerShell Console của Package Manager

Lưu ý rằng mỗi dự án sẽ có một tệp package.config được sử dụng để theo dõi các gói đã cài đặt. Nếu điều này được thay đổi (đặc biệt nếu bạn thay đổi ngược lại), các dự án có thể không tự động tải xuống phiên bản gói chính xác. Trong trường hợp đó, hãy ghi lại các gói được yêu cầu và thực hiện gỡ cài đặt gói, sau đó là gói cài đặt cho mỗi gói.

Ngoài ra, các bản sao lưu là bạn của bạn! ;)


12

Trong Visual Studio,

  • chuyển đến Dự án hoặc Giải pháp được đề cập
  • nhấp chuột phải, Quản lý Gói NuGet ...
  • ở bên trái, bạn sẽ thấy ' Gói đã cài đặt '
  • bấm vào đây và bạn sẽ thấy danh sách

9

Ngoài tất cả các câu trả lời đã cho, cũng có một danh sách rõ ràng ở định dạng XML của tất cả các gói đã cài đặt trong thư mục gốc của dự án Visual Studio của bạn: package.config :

Nhập mô tả hình ảnh tại đây


Theo tôi, phản ứng tốt nhất.
etiennejcharles

Với cấu trúc tệp dự án mới được giới thiệu trong Visual Studio 2017 phiên bản 15.7, các gói NuGet có thể (hoặc sẽ dành cho các dự án mới) được chuyển đến tệp dự án và bạn sẽ không tìm thấy packages.configtệp. Xem tài liệu của Microsoft .
Frode Evensen

Tuy nhiên, điều này chỉ cung cấp cho bạn một dự án tại một thời điểm. Tôi có khoảng 250 dự án trong giải pháp của mình nên các câu trả lời khác sẽ tốt hơn nếu bạn không muốn xem qua từng giải pháp một.
RosieC



3

Nếu bạn đã cài đặt .NET Core runtime, bạn có thể sử dụng lệnh gói danh sách dotnet trong công cụ .NET Core CLI để tìm nạp các gói đã cài đặt cho một giải pháp hoặc dự án nhất định. Sử dụng nó như vậy từ dòng lệnh Windows:

dotnet list "C:\Source\MySolution\MySolution.sln" package

Nó hoạt động trên cả dự án .NET Framework và .NET Core.

Lưu ý: Để lệnh này hoạt động, giải pháp phải sử dụng định dạng NuGet PackageReference mới để tham chiếu các gói NuGet. Di chuyển dễ dàng bằng cách nhấp chuột phải vào package.config và nhấp vào "Di chuyển package.config sang PackageReference ...", sau đó khôi phục các gói bằng cách xây dựng giải pháp.


Không hoạt động với .NET Core nhưng không hoạt động với .NET 4.5 Giải pháp: Ít nhất đây là trường hợp trên máy tính của tôi.
Christian Casutt

1
@ChristianCasutt Tôi vừa thử nghiệm nó và nó hoạt động tốt trên .NET Framework 4.5, điều duy nhất tôi phải làm là di chuyển từ package.config sang PackageReference , sau đó khôi phục các gói nuget bằng cách xây dựng giải pháp.
Shahin Dohan

Không có sự khác biệt giữa tham chiếu / sử dụng và cài đặt? Các gói NuGet không được cài đặt trên toàn cầu, độc lập với các giải pháp / dự án?
Peter Mortensen

@PeterMortensen Tôi giả sử ở đây rằng OP có nghĩa là được cài đặt cho một dự án / giải pháp. Trên toàn cầu, các gói đã tải xuống được lưu vào bộ nhớ đệm và tôi không nghĩ rằng thuật ngữ "đã cài đặt" sẽ có ý nghĩa trong bối cảnh đó.
Shahin Dohan

0

Trả lời cho "Có cách nào để thực hiện việc này bằng cách sử dụng nuget.exe không?" - bitbonk

Dựa trên câu trả lời từ jstar ở trên. Tôi đã sử dụng \thay vì /nó phù hợp hơn với môi trường Windows nơi nuget ở nhà. Chỉnh sửa câu trả lời của tôi đã bị từ chối nên tôi đăng bài của riêng mình.

nuget list -Source c:\code\packages

Trong trường hợp c:\codelà một đường dẫn đến địa phương mã kho của bạn. Các packagesthư mục trên cùng cấp như giải pháp tập tin của bạn (* sln).


Nhưng điều này liệt kê các nguồn (các gói đến từ đâu), không phải các gói đã cài đặt (?).
Peter Mortensen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.