Làm thế nào bạn có thể tìm thấy các gói NuGet không sử dụng trong một giải pháp?


148

Làm thế nào bạn có thể tìm thấy các gói NuGet không sử dụng trong một giải pháp?

Tôi đã có một số giải pháp trong đó có rất nhiều gói được cài đặt và một số lượng lớn được gắn cờ là có cập nhật.

Tuy nhiên tôi lo ngại có thể có những thay đổi vi phạm, vì vậy trước tiên tôi muốn dọn dẹp bằng cách xóa mọi gói không sử dụng.


2
Bạn nhận ra rằng việc phá vỡ các thay đổi trong các gói bạn không sử dụng sẽ không ảnh hưởng đến bạn ... Đối với câu hỏi, tôi chỉ xóa tất cả các gói NuGet và thêm lại những gì trình biên dịch nói với tôi.
Ohad Schneider

5
@OhadSchneider Không ... nhưng OCD trong tôi không muốn tất cả các gói không sử dụng, ví dụ như trong triển khai
SteveC

Câu trả lời:


57

ReSharper 2016.1 có một tính năng để loại bỏ NuGet không sử dụng.

Nó có thể được chạy trên một giải pháp và trên mỗi dự án trong một giải pháp và nó thực hiện những điều sau đây:

  1. Phân tích mã của bạn và thu thập tài liệu tham khảo cho các hội đồng.
  2. Xây dựng biểu đồ sử dụng NuGet dựa trên tập quán của các hội đồng.
  3. Các gói không có tệp nội dung, bản thân không được sử dụng và không có phụ thuộc được sử dụng được coi là không sử dụng và được đề xuất loại bỏ.

Thật không may, điều này không hoạt động cho project.jsoncác dự án ( RSRP-454515 ) và các dự án cốt lõi ASP.NET ( RSRP-459076 )


2
Tôi có 2016.1 và R # không xóa các tham chiếu nuget chưa sử dụng .. Tôi đang sử dụng project.json với nuget3 - đó có phải là vấn đề đã biết không?
Peter McEvoy

2
@PeterMcEvoy Vâng, đây là vấn đề được biết đến. Cảm ơn đã chỉ ra. Tôi đã cập nhật câu trả lời để làm rõ điều đó.
ulex

4
Tôi phải bị mù nhưng tôi không thấy cách nào để thực sự chạy công cụ này
claudekennilol

14
@claudekennilol chỉ cần tìm ra nó. nhấp chuột phải vào dự án và có một tùy chọn cho "Tối ưu hóa tài liệu tham khảo ..."
Matt Sanders

1
@Fractal Đúng. Nó rất (quá) cho người dùng tư nhân, nhưng nếu bạn ở bất kỳ nơi làm việc nào, thì Resharper rất xứng đáng với quy trình làm việc nhanh hơn và sạch hơn mà bạn có được, so với VS mặc định.
Loại trừ

21

Bạn có thể sử dụng Visual Studio Extension ResolveUR - Giải quyết các tài liệu tham khảo không sử dụng

Giải quyết các tham chiếu không sử dụng bao gồm các tham chiếu nuget trong các dự án Visual Studio 2012/2013 thông qua mục menu tại các nút giải pháp và dự án Solution Explorer Tool Window.

Đây không phải là một nhiệm vụ dễ dàng, vì vậy tôi đề nghị tạo một bản sao lưu và / hoặc cam kết trước đó chỉ để quay lại nếu có sự cố.


Chương trình này quá háo hức khi xóa các thư viện ... Hãy cẩn thận, khi sử dụng một trang web, bạn sẽ nhận thấy rằng rất nhiều DLL là cần thiết nhưng đã biến mất. Nếu gói NuGet yêu cầu gói khác, bạn không nên xóa gói đó mặc dù BẠN không có sự phụ thuộc lớn vào nó.
jgoupilil

Tôi đã sử dụng công cụ này với kết quả xấu. Nó đã bị xóa (hoặc ít nhất là đề xuất xóa) rất nhiều thứ thực sự được sử dụng. Đã có một vài lần tôi tin tưởng các đề xuất và phải dành thời gian quý báu để cố gắng khôi phục những gì nó đã bị xóa.
Ryan VandenHeuvel

2
[LƯU Ý] Mô tả nêu rõ:The tool is not tested to work with DotNet Web projects(Asp.Net, MVC), Windows CE, Silverlight project types. Use it at your own risk.
Korayem

Công cụ này thực sự tốt đẹp! Nó đủ thông minh để không xóa NUnit.ConsoleRunner, v.v. mặc dù bạn không có tham chiếu trực tiếp đến nó trong mã của mình
OlegI

Công cụ này chậm. Tôi có giải pháp với hơn 250 dự án .. Tôi đã chờ đợi .. và chờ đợi .. thở dài
Piotr Kula

11

Bạn có thể thực hiện điều này bằng cách sử dụng Resharper 2019.1.1.

Nhấp chuột phải vào dự án> Refactor> Xóa các tài liệu tham khảo không sử dụng.

Nếu dự án của bạn nhỏ, bạn cũng có thể dự án> Tối ưu hóa các tài liệu tham khảo được sử dụng. . .

Một cửa sổ sẽ xuất hiện. Chọn tất cả các tài liệu tham khảo và loại bỏ tất cả chúng. Sau đó quay lại và thêm lại những cái gây ra lỗi biên dịch.


3
Trong VS.Net 2019 với Resharper, tôi đã tìm thấy tùy chọn này trong: Solution Explorer> Tài liệu tham khảo > Tối ưu hóa tài liệu tham khảo ...
R. Schreurs

"Cửa sổ công cụ Optimize Reference Reference hiển thị các tham chiếu lắp ráp không được sử dụng và sử dụng trong dự án hiện tại và hiển thị chính xác các tham chiếu được sử dụng như thế nào." blog.jetbrains.com/dotnet/2012/01/03/ cường
Nick

1

Đây là lao động thủ công, nhưng nó hoạt động.

  1. Sử dụng ReSharper hoặc công cụ phân tích mã tương tự để xác định bất kỳ tài liệu tham khảo không sử dụng nào trong các dự án của bạn và gỡ cài đặt nuget trong các dự án tương ứng.

  2. Đôi khi các nugets được gỡ cài đặt vẫn còn tồn tại trong danh sách Gói đã cập nhật và danh sách Cập nhật trong hộp thoại Quản lý Gói NuGet. Đóng Visual Studio sau đó xóa packagesthư mục, sau đó mở lại giải pháp và khôi phục các nugets của bạn.


0

Tôi không nghĩ có một cách mặc định để tìm ra điều này. Lý do chính là sự đa dạng của những thứ mà các gói này có thể làm từ việc tham khảo một hội đồng đến việc tiêm mã nguồn vào dự án của bạn. Bạn có thể muốn kiểm tra Nuget.Extensions mặc dù. Các chủ đề sau đây về codeplex nói về một báo cáo kiểm toán các gói nuget.

http://nuget.codeplex.com/discussions/429694

(NuGet đã được chuyển từ Codeplex sang GitHub. Lưu trữ liên kết ở trên :) https://web.archive.org/web/20171212202557/http://nuget.codeplex.com:80/discussions/429694

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.