我正在尋找一種方法來檢測在一個大的Visual Studio解決方案與程序集引用問題:檢查二進制引用
- 壞地點二進制引用,就像一個路徑不是在源代碼控制或另一個項目的輸出
- 二進制到同一程序集的多個版本在解決跨項目引用
- 沒有路徑二進制引用,可能被重定向到GAC
- 二進制引用本來應該是項目引用
整個故事
我在一個大C#項目工作與幾乎200個項目。 隨着時間推移出現的問題之一是添加了對程序集的引用,但並非總是對同一版本或正確的位置進行引用。
例如,項目可能會在沒有提示路徑的情況下獲取對System.Web.Mvc的引用,從而使其引用GAC中的任何版本。 Visual Studio(和Resharper)也會提供添加缺少的引用,但可以通過添加對其他項目的輸出文件夾的引用來實現。
現在最近的Windows Update catastrophy讓一些隊員死在水中,無法建立解決方案。正如你所想象的那樣,這爲我們提高了組裝參考管理的優先級。
要檢測一些最明顯的問題,我已經設置了一個可以包含在每個csproj文件中的msbuild文件,並將檢測到錯誤的引用。
但是,需要手動編輯新項目文件才能包含該腳本。所以這將不可避免地被遺忘。
我真的很喜歡在連續構建過程中檢查解決方案中所有項目文件的「錯誤」引用,以便所有項目都將始終進行檢查。
我一直在搜索這樣的解決方案一段時間,發現了很多靜態分析和代碼分析工具,但沒有分析解決方案中的項目文件。
那麼,在我離開之前和roll my own解決方案,有沒有辦法做到這一點?
更新
爲了清理代碼庫,我創建了一個位ScriptCS代碼,會掃描所有的csproj文件中的NuGet包參考組件和解決這些問題。這是on GitHub。
*問題,要求我們建議還是找一本書,工具,軟件庫,教程或其他異地資源是題外話堆棧溢出,因爲他們往往以吸引自以爲是的答案和垃圾郵件。相反,描述問題,什麼迄今所做來解決它。* – EZI 2014-10-16 20:48:35
@EZI我問一個具體的解決方案到具體的軟件開發問題,我會說,有資格作爲一個StackOverflow的話題 – 2014-10-16 20:50:36
我們有一種一個相關的問題。隨着時間的推移,我們的解決方案最終會有兩個或三個版本的相同的NuGet包,因爲人們只需安裝最新的包而不是使用現有版本。任何人......我最終編寫了我自己的工具來分析軟件包並找出任何重複的東西。我懷疑你將不得不做同樣的事情。 – 2014-10-16 20:54:46