實幹家任何人都知道一個良好的實用程序或程序的詢問所有項目的解決方案或目錄,並告訴你在哪裏循環引用,爲了能夠編譯..c#:找到循環引用/按正確順序編譯的實用程序?
我記得看到一個前一段時間,但我可以」 t在任何地方找到它..
實幹家任何人都知道一個良好的實用程序或程序的詢問所有項目的解決方案或目錄,並告訴你在哪裏循環引用,爲了能夠編譯..c#:找到循環引用/按正確順序編譯的實用程序?
我記得看到一個前一段時間,但我可以」 t在任何地方找到它..
NDepend是一個很好的工具,將做到這一點,多了很多。也許它是爲了你想要的東西,但有一個試用版,所以看看...
您可以通過System.Reflection追逐依賴關係樹。在構建樹時,添加節點時,您會檢查節點的父節點是否與您要添加的節點相同。如果爲true,則向用戶拋出異常。
拋出這樣一個技術的例外是確定的,如果你的用戶會是誰知道集的引用和異常是如何工作的人 - 人喜歡開發商:)
如果您使用項目解決方案中的項目之間的引用正確的構建順序將由Visual Studio自動確定(或的MSBuild)。當然,如果您使用程序集引用,則會中斷。另外,Visual Studio將阻止您添加通知項目引用。
>>此外,Visual Studio將阻止您添加循環項目引用。 這是一個不錯的功能。如果你的循環引用超過了2點的引用(例如A→B→C→A),VS會給你更多關於哪些引用會引起潛在的循環引用的信息。 – 2014-09-17 17:33:49
我知道這是一個遲到的答案,但我發現使用GraemeF和tsilb的答案都顯示兩個程序集之間沒有依賴關係。看起來,如果你扭轉依賴的順序一樣(大會一引用乙,但是你把它切換到乙引用一個),它的葉子在構建順序的依賴。要解決此問題,請打開解決方案的「屬性」對話框,轉到「通用屬性」,然後選擇「項目依賴項」。找到大會A並刪除依賴大會B。這將允許您正常添加參考。
我繼承了一個巨大的視覺工作室解決方案與幾個循環參考路徑。我寫了一個劇本linqpad幫助尋找循環引用鏈:
https://github.com/ronnieoverby/linqpad-utils/blob/master/Find%20circular%20references.linq
我的實現可能是幼稚的,但它的工作相當快的我。
是的,這有很多功能,但我喜歡它..謝謝 – 2009-11-05 07:31:36