Xóa tất cả các tham chiếu không sử dụng khỏi một dự án trong các dự án Visual Studio


263

Tôi chỉ tự hỏi liệu có thể trong các phiên bản Visual Studio khác nhau có thể tự động xóa tất cả các tham chiếu khỏi một dự án chưa từng được sử dụng không?

Trong câu trả lời của bạn, vui lòng chỉ định phiên bản VS mà giải pháp áp dụng cho.


4
Nói chung là tự hỏi, việc loại bỏ các DLL này dẫn đến sự cải thiện có thể quan sát được trong thời gian xây dựng hay cái gì khác? (Tất nhiên, ngoài việc loại bỏ các phụ thuộc dư thừa)
monish001

3
Có bất kỳ phần mở rộng miễn phí tương tự cho VS2015 không?
George Birbilis

1
Dự án VB.Net có nó từ VS 2005, nhưng nó chưa bao giờ được triển khai cho các dự án C # msdn.microsoft.com/en-us/l
Library / 7sfxafba

4
Bạn có thể bỏ phiếu để có tính năng này như là một phần của VS (như nó phải vậy).
Mike Lowery

2
@ monish001 - mọi hội đồng và tài sản đều tăng dấu hiệu triển khai và là một điều khác để quản lý / duy trì hoặc là một nguồn tiềm năng cho các lỗi.
StingyJack

Câu trả lời:


55

Nếu bạn đã cài đặt Resharper (plugin), bạn có thể truy cập một tính năng cho phép bạn phân tích các tài liệu tham khảo đã sử dụng thông qua Solution Explorer> (nhấp chuột phải) Tài liệu tham khảo> Tối ưu hóa tài liệu tham khảo ...

http://www.jetbrains.com/resharper/webhelp/Refactorings__Remove_Unuse_References.html

Tính năng này không xử lý chính xác:

  • Phụ thuộc lắp ráp tiêm
  • Các hội đồng được tải động (Hội đồng. Tải)
  • Các tập hợp mã gốc được tải thông qua interop
  • Điều khiển ActiveX (COM interop)
  • Những cách sáng tạo khác để tải lắp ráp

nhập mô tả hình ảnh ở đây


1
Tuyên bố cuối cùng của bạn "Tuy nhiên nó không hoàn hảo, bất kỳ hội đồng nào phụ thuộc vào các hội đồng tham chiếu trong dự án hiện tại của bạn vẫn được đánh dấu là không sử dụng." thực sự không phải là một vấn đề Bản dựng biết sao chép các tài liệu tham khảo của bạn. Xem câu trả lời này: stackoverflow.com/a/2290139/26262
Ed Greaves

Mặc dù đây là một cách khả thi để thực hiện điều này, "trong các phiên bản Visual Studio khác nhau" đối với tôi có nghĩa là không phải cái gì khác mà là "bên trong"
Mark Schultheiss

28

Phần mở rộng Resharper sẽ làm điều này cho bạn.

Tiện ích mở rộng này hỗ trợ Visual Studio 2005 đến 2017.

Mặc dù trình biên dịch sẽ không bao gồm các tập hợp không được sử dụng, việc sử dụng các câu lệnh và tham chiếu không liên quan làm chậm Visual Studio và Intellisense, vì có nhiều mã hơn các công cụ phải xem xét.


12
rằng người ta đã tìm thấy rất nhiều tài liệu tham khảo không được sử dụng trong dự án - nhưng một loạt trong số chúng thực sự được sử dụng ... Vì vậy, tôi không tin tưởng Resharper với các tài liệu tham khảo
Offler

5
Resharper tiêu tốn hàng tấn bộ nhớ trong các dự án lớn khi có nhiều tài liệu tham khảo cuối cùng gặp sự cố VS
Cemre

2
Các phiên bản @eraj VS Express không hỗ trợ các tiện ích mở rộng, hãy lấy phiên bản Cộng đồng miễn phí, hỗ trợ các tiện ích mở rộng như ReSharper.
tiền mã hóa

4
Pete, bất kỳ công cụ tự động sẽ có khả năng phản ứng thái quá. Đặc biệt là trong thời đại của các phụ thuộc DI và PCL dường như chưa được xử lý có thể cần thiết, nhưng đó hầu như không phải là lỗi của công cụ. Thay vì chụp ảnh màn hình, bạn nên sử dụng phần mềm kiểm soát phiên bản. Một hệ thống hiện đại như Git hoặc Hg sẽ cho phép bạn đăng ký thường xuyên tại địa phương, do đó bạn không bao giờ bị mất việc.
Mathieson

2
theo như tôi có thể nói với Resharper cho thấy các không gian tên không được sử dụng, không phải là các tham chiếu lắp ráp, đó là những gì tôi nghĩ rằng câu hỏi "tham chiếu không sử dụng từ một dự án" có nghĩa là gì. Tôi cũng muốn tìm cái thứ hai
Sonic Soul

28

Bạn có thể thử tiện ích mở rộng VS2010 miễn phí: Trợ lý tham khảo của nhóm Lardite. Nó hoạt động hoàn hảo cho tôi. Công cụ này giúp tìm các tài liệu tham khảo không sử dụng và cho phép bạn chọn những tài liệu tham khảo nào nên được gỡ bỏ.


3
Không làm việc với dự án MVC. Nó loại bỏ DLL thiết yếu như .Helpers và .WebPage
User.Anonymous


Điều đó hiệu quả nếu bạn làm theo một mẹo đơn giản: devio.wordpress.com/2014/12/03/ Từ
ravi trừngjwani

5
và cho VS2019?
DARKGuy

21

Trong một dự án Visual Basic có hỗ trợ xóa "Tài liệu tham khảo không sử dụng" (Dự án -> Tài liệu tham khảo -> Tài liệu tham khảo không sử dụng). Trong C # có một chức năng như vậy.

Cách duy nhất để thực hiện nó trong một dự án C # (không có các công cụ khác) là loại bỏ các hội đồng không sử dụng có thể, biên dịch dự án và xác minh nếu có bất kỳ lỗi nào xảy ra trong quá trình biên dịch. Nếu không có lỗi xảy ra, bạn đã loại bỏ một hội đồng không sử dụng. ( Xem bài viết của tôi )

Nếu bạn muốn biết dự án (lắp ráp) nào phụ thuộc vào các hội đồng khác, bạn có thể sử dụng NDepend .


2
Trong VS 2008/2010 có tùy chọn menu chuột phải để xóa hoặc xóa và sắp xếp sử dụng.
JohnB

11
@ John: Tất nhiên là bạn đúng, nhưng câu hỏi của anh ấy là về các tài liệu tham khảo (cho các hội đồng) và không sử dụng (về không gian tên).
Jehof

VS2012: menu: Project-> property-> Tài liệu tham khảo-> Tài liệu tham khảo không sử dụng.
LosManos

20

Đối với Visual Studio 2013/2015/2017 có một tiện ích mở rộng thực hiện chính xác những gì bạn muốn: ResolveUR . Điều này về cơ bản là:

  • tham chiếu được loại bỏ trong dự án
  • dự án được biên dịch với msbuild
  • kiểm tra lỗi xây dựng
  • khôi phục tham chiếu loại bỏ nếu có lỗi xây dựng.

chỉ cần cài đặt nó cho VS 2017 Community Edt. - hoạt động tốt cho đến nay.
Thomas

nó nói có lỗi xây dựng nhưng không có lỗi xây dựng khi tôi xây dựng nên nó không hoạt động so với phiên bản comm2015
Raghavendra

Bạn có thể tạo một vấn đề trên trang của github: github.com/subatta/ResolveUR/issues
Claudiu Constantin

5
2,5 trên 5 sao trên Visual Studio Marketplace từ 52 đánh giá khiến tôi mất một chút
ECH

Đã thử nó trên một Dự án MVC và nó đề xuất loại bỏ một số phụ thuộc quan trọng như System.Web.Helpers vì vậy tôi không muốn để nó tự đi.
Jahaziel

19

Tất cả bạn cần là đá và đốt ngón tay trần sau đó bạn có thể làm điều đó như một thượng cổ.

  1. Xóa các không gian tên không sử dụng (cho mỗi lớp)
  2. Chạy bản dựng gỡ lỗi
  3. Sao chép các tham chiếu không gian tên thực thi và còn lại của bạn vào vị trí mới
  4. Chạy chương trình thực thi
  5. Thiếu tham chiếu DLL lỗi sẽ xảy ra
  6. Sao chép DLL yêu cầu từ thư mục Debug
  7. Lặp lại 4-6
  8. Gu Gu Ga Ga?
  9. Ném đá của bạn

Bạn cũng có thể dựa vào các công cụ xây dựng của mình để cho bạn biết tham chiếu nào vẫn được yêu cầu. Đó là kỷ nguyên của VS 2017, caveman vẫn còn tồn tại.


Haha, tốt, không có gì sai với một chút hài hước ở đây. Cách tiếp cận Stoneman thực sự, trông giống như không có phiên bản Enterprise tốn kém như những gì chúng ta có ngay bây giờ.
Nicholas Petersen

16

Đối với bất kỳ ai đến đây tìm kiếm Visual studio 2012 :

Tải xuống và cài đặt Trợ lý tham khảo cho Visual Studio 11

Sau này bạn có thể làm:

nhập mô tả hình ảnh ở đây


1
Trợ lý tham khảo cho Visual Studio 11 dường như không chính xác, nó cho tôi thấy một loạt các tài liệu tham khảo chưa sử dụng mà tôi biết thực sự đang được sử dụng (được cài đặt qua Nuget).
Bill Yang

1
Không làm việc với dự án MVC. Nó loại bỏ DLL thiết yếu như .Helpers và .WebPage
User.Anonymous

Vâng, điều này đã quay trở lại để cắn vào mông tôi bằng chương trình WPF C #.
Charles Clayton

Không phải là một lựa chọn trong VS2017
Nathan

1
Không tồn tại trong VS2019
Vin Shahrdar

15

Với phiên bản Visual Studio 2017 và 2015, bạn có thể thực hiện điều này với tính năng Bản đồ mã , nhưng tính năng này chỉ có trong Phiên bản doanh nghiệp , không phải Cộng đồng hoặc Chuyên nghiệp phiên bản .

Nhấp chuột phải vào nút dự án trong trình khám phá giải pháp và chọn 'Hiển thị trên Bản đồ mã.' Điều này sẽ hiển thị dll của bạn dưới dạng một nút trong biểu đồ trống. Nhấp chuột phải vào nút đó trong Bản đồ mã và chọn "Hiển thị các tài liệu tham khảo này." Điều này sẽ thêm một nút bổ sung gọi là "Externals" có thể được mở rộng để chỉ hiển thị các hội đồng thực sự được tham chiếu.

nhập mô tả hình ảnh ở đây


1
Nếu bạn có phiên bản Enterprise và không thấy tùy chọn này trong menu ngữ cảnh, thì bạn cần cài đặt tính năng "Bản đồ mã" từ trình cài đặt VS trong bảng Thành phần riêng lẻ.
StingyJack

Đây là một cái tốt, Cảm ơn bạn @Glenn. Tôi chỉ muốn nói rằng tôi đã sử dụng Micosoft.Office.Interop.Excel và nó không được liệt kê trong số các tài liệu tham khảo khác, vì vậy vẫn phải cẩn thận một chút.
Emil Filip

14

Trong Visual Studio 2013, tiện ích mở rộng này hoạt động: ResolveUR


15
@abarisone Câu trả lời chung chung "không sử dụng liên kết làm câu trả lời" của bạn thực sự chỉ nên được sử dụng SAU KHI bạn đã thực sự TÌM KIẾM câu trả lời. Liên kết là điều duy nhất mà IS có liên quan cho câu trả lời này. Đó là một liên kết đến một plugin VS, vì vậy không có gì khác liên quan.
Charles Boyung

Tôi đồng ý với Charles. Điều này có vẻ như lạm dụng điều độ từ @abarisone. Câu trả lời này thực sự giúp tôi tiết kiệm thời gian và tôi sẽ ghét nó nếu có bất kỳ mod nào lạm dụng quyền hạn của họ để xóa nó.
Zun

@Zun Trước hết tôi chưa bao giờ là người điều hành hoặc tự nhận là. Mục đích của tôi là hỏi thêm thông tin về phần mở rộng. Nó có thể rất hời hợt bên cạnh tôi, nhưng tôi chắc chắn không có ý định lạm dụng.
abarisone

12

Một số người đề nghị sử dụng một công cụ tuyệt vời - Trợ lý tham khảo cho Visual Studio . Vấn đề là VS2012 là Visual Studio được hỗ trợ mới nhất. Nhưng có một cách để làm cho nó hoạt động trong VS2013;)

Và đây là cách thực hiện:

1) Tải xuống Lardite.RefAssistant.11.0.vsix

2) Thay đổi tiện ích mở rộng thành zip: Lardite.RefAssistant.11.0.vsix->Lardite.RefAssistant.11.0.zip

3) Giải nén và mở extension.vsixmanifesttệp trong trình soạn thảo văn bản

4) Tìm tất cả các lần xuất hiện InstallationTarget Version="[11.0,12.0)"và thay thế chúng bằngInstallationTarget Version="[11.0,12.0]" (lưu ý khung đóng)

5) Lưu tệp và nén tất cả các tệp để chúng ở cấp zip gốc

6) Thay đổi phần mở rộng của cái mới zipthànhvsix

7) Cài đặt và tận hưởng :)

Tôi đã thử nghiệm nó với VS2013, cảm ơn nguồn cho hướng dẫn

EDIT Thêm để hỗ trợ Phiên bản Cộng đồng VS 2015

<InstallationTarget Version="[14.0,15.0]" Id="Microsoft.VisualStudio.Community" />

Ý nghĩa của dấu ngoặc

[ – minimum version inclusive.

] – maximum version inclusive. 

( – minimum version exclusive. 

) – maximum version exclusive.

1
Điều này chỉ hoạt động tốt! Có vẻ như một lỗi đánh máy đơn giản mà tác giả có thể đã sửa từ nhiều năm trước - nhưng dường như anh ta đã biến mất, ít nhất là trang web có ...
wexman

Đây không phải là một lỗi đánh máy, nhưng là phiên bản VS được hỗ trợ cao nhất :). Nhà phát triển có nghĩa vụ kiểm tra tiện ích bổ sung của mình với mọi phiên bản VS mới và tăng số lượng, nhưng vì một số lý do, họ đã không làm điều đó.
VladL

Nhớ dừng "sao chép và dán" công cụ. :)
Rikki

@RikkiRockett Bạn đang giải quyết cho tôi? Tôi đã liên kết nguồn trong câu trả lời của tôi. Hay chính xác ý bạn là gì?
VladL

2
Người đàn ông Nah. Tôi đã nói đùa. Chỉ cần nói với anh chàng đặt ")" thay vì "]" người đã khiến tất cả chúng tôi làm theo hướng dẫn của bạn. :) Mặc dù vậy, công việc tốt đẹp, chỉ cần làm những gì bạn nói và tất cả đều ổn! Bạn vừa cứu tôi một ngày vật lộn với điều này. (y)
Rikki

7

Bạn có thể sử dụng tiện ích mở rộng Reference Assistant từ thư viện tiện ích mở rộng Visual Studio.

Được sử dụng và hoạt động cho Visual Studio 2010.


2
Bạn cần cẩn thận với các dự án web. Nó báo cáo các DLL được sử dụng là "không sử dụng".
Miro J.

Tôi đồng ý với Miro. Tôi đã thử sử dụng điều này với dự án web của mình và nó đã chọn hai tá tài liệu tham khảo được yêu cầu để chạy ứng dụng web của tôi (System.Web. *, Ninject. *, EntityFramework, chỉ để đặt tên cho một vài).
Nhà bếp Denis M.

Không làm việc với dự án MVC. Nó loại bỏ DLL thiết yếu như .Helpers và .WebPage
Đồng nghĩa

1

Sử dụng DevExpress, tôi làm theo các hướng dẫn sau:

  1. Trong VS, hãy truy cập DevExpress - Editor - Code Cleanup. Trong Quy tắc, kiểm tra 'Xóa tham chiếu không gian tên không sử dụng'. Nhấn OK.
  2. Nhấp chuột phải vào giải pháp và chọn 'Dọn mã'. Việc dọn dẹp diễn ra trong vài phút và kết thúc.
  3. Xây dựng ứng dụng của bạn


-3

Phương pháp sau không phụ thuộc vào bất kỳ 'tiện ích bổ sung nào và không gây đau đớn cho lắm.

Bước qua từng tệp nguồn của bạn và

  1. Chọn tất cả (Ctrl-A)
  2. Chuyển đổi mở rộng phác thảo (Ctrl-M, M). Điều này sẽ giảm tập tin xuống hai dòng.
  3. Nhấp vào không gian tên '+'. Điều này sẽ hiển thị mỗi lớp của tệp dưới dạng một dòng. Quét số tham chiếu của mỗi lớp, tìm kiếm các lớp không được ước tính.
  4. Nhấp vào từng lớp '' + '. Điều này sẽ hiển thị mỗi chức năng lớp dưới dạng một dòng duy nhất. Quét số tham chiếu của từng chức năng, tìm kiếm các chức năng không được ước tính.

Quét từng tệp tìm kiếm '0 tham chiếu' chỉ mất một giây.

Quét toàn bộ dự án chỉ mất vài phút.


-11

Trong VB2008, nó hoạt động theo cách này:

Project>Add References

Sau đó bấm vào tab Recent nơi bạn có thể thấy danh sách các tài liệu tham khảo được sử dụng gần đây. Xác định vị trí bạn không muốn và xóa nó. Sau đó, bạn đóng mà không cần thêm bất cứ điều gì.


1
Điều này không kiểm tra xem tham chiếu có được sử dụng hay không
Xavier Poinas

-12

Để xóa tham chiếu trong Visual C # Trong Solution Explorer, hãy mở nút Tham chiếu bên dưới nút dự án. Bấm chuột phải vào một tham chiếu và bấm Xóa.


3
Điều này dường như không bị giới hạn chỉ sử dụng hoặc tự động trong hoạt động.
Nathan Tuggy

nó không hoạt động tự động.
Amir

cũng đã cố gắng, nhưng câu trả lời tồi, không tự động như đã nói trước đây
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.