2015-05-12 50 views
2

我希望我能找到一個更好的方式來標題,但希望它更清晰,正如我解釋的。我也希望Visual Studio支持我想使用它,或者有人知道插件或光滑的解決方法可以回答我的問題。在C#和VS2012中,如何查找所有使用特定「using」指令的行?

真正簡單的例子:

using System.IO 
public class MyClass 
{ 
    if (File.Exists("myfile.txt")) 
    { 
     //Do something that doesn't involve System.IO 
    } 
} 

我想用(如System.IO)在特定的點,找到每一個依賴於使用指令,如「File.Exists」行線。

在VS2012中,您可以右鍵單擊文件開頭的「使用」指令,然後選擇組織使用>刪除未使用的使用。這很好,但我想要做相反的事情。

一個笨拙和耗時的解決方案。 一種方法是擦除使用線並嘗試構建,然後查看所有錯誤以嘗試找到合適的錯誤。這個答案就像一個黑客,需要時間,並將結果作爲錯誤列表。

The Circumstance。 我重構了一堆代碼。其中一個類有超過4000行代碼和13條使用指令。在看內部參考資料時,我可以說這個800磅的大猩猩類是從系統的不同部分引用命名空間。我想確定使用特定使用的代碼的區域,以幫助我分解這個類。僅使用缺少的使用進行編譯需要花費時間,並且不會以有用的格式生成結果。

嘗試用另一種方式來表達問題: 「如何讓Visual Studio向我展示依賴於特定using指令的所有代碼行?」

+0

它不像我記得的那樣。香草VS2012的重構功能並不在那裏。編寫一些分析器會更容易,而且可能會修復代碼以使其自動化。 –

+1

您也可以使用完全限定名稱對系統的另一部分進行依賴,然後不涉及使用指令。我會忘記使用指令並嘗試識別用法。你有沒有試過NDepend?自從我使用它以來已經有一段時間了,但是測量組件之間的耦合的IIRC正是它最擅長的。 –

+0

我建議使用http://www.ndepend.com/。 –

回答

1

您可以右鍵單擊使用語句,然後從下拉菜單中單擊「查找所有引用」。

+0

這並不完全。首先,它只返回在方法調用中指定名稱空間的結果。所以它會找到_if(System.IO.File.Exists(「myfile.txt」))_,但它不會找到_if(File.Exists(「myfile.txt」))_。它還搜索整個項目,而不是一個文件/類。 – Earendil

+0

我明白了。在你找到它們之後,你將如何處理所有使用指令的人? – User555

+0

我們將它作爲如何打破4000線課程的指導。使用內部庫名稱的實例並不意味着太多,但想象一下,您有一個巨大的類正在調用用於「UI顯示」,「數據庫訪問」的庫。如果您發現有1000行代碼正在對數據庫進行調用,您可能會懷疑它是遷移到自己的類的不錯選擇。 – Earendil

相關問題