2013-06-16 6 views
7

Trong Visual Studio 2010 (hoặc 2012) có cách xác định tất cả các tham chiếu trong mã đề cập đến bất kỳ lớp/phương thức nào được định nghĩa trong một dll được tham chiếu.Tìm tất cả các tham chiếu của một dll trong một dự án

Hiện nay tôi có hai quá trình mà tôi sử dụng (tùy thuộc vào từng tình huống):

  • Người đầu tiên liên quan đến việc chỉ xóa tham chiếu dll từ dự án và sau đó thực hiện một lưu ý của tất cả các địa điểm xây dựng lỗi.
  • Cách khác là mở tham chiếu trong Object Browser và sau đó mở rộng đến không gian tên của nó và mỗi không gian tên tôi thực hiện tìm kiếm thủ công, nhưng điều này không phải lúc nào cũng giúp tìm tất cả các tham chiếu và vì mã cũ có cùng một không gian tên mở rộng nhiều hội đồng có rất nhiều tiếng ồn để lọc qua.

Đây không phải là giải pháp thực sự lý tưởng, có cách nào dễ dàng hơn để thực hiện việc này không? có lẽ thông qua một phần mở rộng VS.

Trả lời

6

Bạn có thể tìm thấy điều này nếu bạn cài đặt Resharper:

Mở rộng References và chọn Find code Dependent on Module

enter image description here

Kết quả sau đó xuất hiện như:

enter image description here

+0

tuyệt vời! cảm ơn vì tiền hỗ trợ. không bao giờ biết rằng Resharper có thể làm được điều này! –

2

Đừng có Resharper, nhưng bạn có Sublime Text?

trong Văn bản tuyệt vời, chọn 'thư mục mở' và chọn thư mục chứa giải pháp. Sau đó chọn mục trình đơn Tìm ->Tìm trong Files ...

Trong 'Trong đó:', nhập:

*.scsproj 

Sau đó, trong 'Tìm:' ​​lĩnh vực, tìm kiếm chuỗi

Include="[full namespaced name of library]" 

ví dụ:

Include="System.Xml.Linq" 

sẽ tìm tất cả các dự án tham chiếu đến System.Xml.Linq dll trong giải pháp.

+0

Tôi không tìm kiếm các dự án tham khảo dll, tôi đang tìm kiếm lớp nào sử dụng các thành viên được định nghĩa trong dll. – Seph

0

Bạn không có bất kỳ Tiện ích mở rộng nào?

Chỉ cần viết một đoạn mã ... dễ nhất ... Tôi thấy nó rất dễ dàng để chỉnh sửa, thông qua mã, hồ sơ dự án ..

private static List<string> FindAllRefrences(ref int ctr, string dir, string projectToSearch) 
    { 
     List<string> refs = new List<string>(); 
     foreach (var projFile in Directory.GetFiles(dir, "*.csproj", SearchOption.AllDirectories)) 
     { 
      if (projFile.IndexOf(projectToSearch, StringComparison.OrdinalIgnoreCase) >= 0) 
       continue; 
      //var t = false; 
      var lines = File.ReadAllLines(projFile); 

      foreach (var line in lines) 
      { 
       if (line.IndexOf(projectToSearch, StringComparison.OrdinalIgnoreCase) >= 0) 
       { 
        ctr++; 
        refs.Add(projFile); 
        break; 
       } 
      } 
     } 

     return refs; 
    }