HOW TO:針對圖層圖表驗證 .NET 程式碼
這個主題適用於:
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
根據圖層圖表驗證程式碼,可協助您對變動的程式碼強制使用架構條件約束。 當您執行此工作時,程式碼中的相依性與圖表上的相依性會進行比較。 圖層驗證也可協助您執行下列工作:
檢查現有程式碼及其預定設計之間的差異。
尋找未依預定進行組織,或是具有不當相依性的程式碼。
尋找可能會受到建議變更所影響的相依性。
例如,您可以編輯圖層圖表來顯示潛在的架構變更,然後驗證程式碼,以便查看受影響的相依性。 如需詳細資訊,請參閱 HOW TO:從成品建立圖層圖表和圖層圖表:方針。
將程式碼重構或移轉至不同設計。
在您將程式碼移至不同的架構時,請尋找仍需運作的程式碼或相依性。
您的 Visual Studio 方案必須至少有一個模型專案具有圖層圖表,才能驗證程式碼。 圖層圖表會描述系統架構並將命名空間、專案和其他成品組織成邏輯和抽象的群組 (也就是圖層)。 這些圖層可說明系統的主要元件或這些成品所執行的工作。 您必須定義這些圖層、將成品連結至這些圖層,並說明成品之間的預定相依性。
注意事項 |
---|
有些類型的成品可以連結至圖層,但是不支援針對圖層圖表進行驗證。 若要了解成品是否支援驗證,請開啟 [圖層總管],然後檢查成品連結的 [支援驗證] 屬性。 如需詳細資訊,請參閱不支援驗證的成品。 |
如需如何建立圖層圖表的詳細資訊,請參閱下列主題:
若要驗證 C 或 C++ 程式碼,請下載和安裝 Microsoft Visual Studio 2010 Visualization and Modeling 功能套件。
如需詳細資訊,請參閱 HOW TO:針對圖層圖表驗證 C 和 C++ 程式碼。
本主題內容
手動加入組件和專案以進行驗證。
隨時以手動方式驗證程式碼。
在本機組建執行期間自動驗證程式碼。
在 Team Foundation Build 執行期間自動驗證程式碼。
疑難排解圖層驗證的問題。
手動加入組件和專案以進行驗證
模型專案中的 [圖層參考] 資料夾包含會在驗證期間進行分析之組件和專案的參考。 當您將項目拖曳到圖層圖表時,對應之組件或專案的參考會自動加入到此資料夾。 您也可以手動加入組件和專案以進行驗證,而不將它們拖曳到圖層圖表。
若要手動加入組件和專案以進行驗證
在 [方案總管] 中,以滑鼠右鍵按一下模型專案或 [圖層參考] 資料夾,然後按一下 [加入參考]。
在 [加入參考] 對話方塊中選取組件或專案,然後按一下 [確定]。
隨時以手動方式驗證程式碼
若要從開啟的圖層圖表驗證程式碼
以滑鼠右鍵按一下圖表介面,然後按一下 [驗證架構]。
注意事項 根據預設,圖層圖表 (.layerdiagram) 檔案的 [建置動作] 屬性會設為 [驗證],以便在驗證程序中納入圖表。
[錯誤清單] 視窗會報告發生的任何錯誤。 如需驗證錯誤的詳細資訊,請參閱認識圖層驗證錯誤。
若要檢視每個錯誤的來源,請按兩下 [錯誤清單] 視窗中的錯誤。
注意事項 Visual Studio 可能會顯示相依性圖形,而非錯誤來源。 如果程式碼具有並非由圖層圖表所指定的組件相依性,或是程式碼遺失了圖層圖表所指定的相依性,則會出現此情況。 請檢閱相依性圖形或程式碼,以判斷相依性是否應存在。 如需相依性圖形的詳細資訊,請參閱 HOW TO:瀏覽和巡覽圖形文件。
若要管理錯誤,請參閱管理驗證錯誤。
若要從命令提示字元驗證程式碼
開啟 Visual Studio 命令提示字元。
若要開啟命令提示字元,請按一下 [開始]、依序指向 [所有程式]、[Microsoft Visual Studio 2010] 和 [Visual Studio Tools],然後按一下 [Visual Studio 2010 命令提示字元]。
選擇下列其中一項:
若要根據方案中的特定模型專案來驗證程式碼,請使用下列自訂屬性執行 MSBuild。
msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true
-或-
瀏覽至包含模型專案 (.modelproj) 檔案和圖層圖表的資料夾,然後使用下列自訂屬性執行 MSBuild:
msbuild /p:ValidateArchitecture=true
若要根據方案中的所有模型專案來驗證程式碼,請使用下列自訂屬性執行 MSBuild:
msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true
-或-
瀏覽至方案資料夾 (其中必須包含圖層圖表所在的模型專案),然後使用下列自訂屬性執行 MSBuild:
msbuild /p:ValidateArchitecture=true
發生的任何錯誤都將列出。 如需 MSBuild的詳細資訊,請參閱 MSBuild和 MSBuild 工作。
如需了解驗證錯誤的詳細資訊,請參閱認識圖層驗證錯誤。
管理驗證錯誤
在開發過程中,您可以隱藏驗證期間已報告過的某些衝突。 例如,您可能會想要隱藏已經處理的錯誤,或是與特定情節無關的錯誤。 當您隱藏錯誤時,最好在 Team Foundation 中記錄工作項目。
若要針對驗證錯誤建立工作項目
- 在 [錯誤清單] 視窗中,以滑鼠右鍵按一下警告、指向 [建立工作項目],然後按一下您要建立的工作項目類型。
使用下列工作來管理 [錯誤清單] 視窗中的驗證錯誤:
若要 |
請依照下列步驟: |
---|---|
在驗證期間隱藏選取的錯誤 |
以滑鼠右鍵按一下一個或多個選取的錯誤、指向 [管理驗證錯誤],然後按一下 [隱藏錯誤]。 隱藏的錯誤會以刪除線的格式出現。 當您下一次執行驗證時,這些錯誤將不會出現。 隱藏的錯誤會在對應圖層圖表檔案的 .suppressions 檔案中追蹤。 |
停止隱藏選取的錯誤 |
以滑鼠右鍵按一下一個或多個選取的隱藏錯誤、指向 [管理驗證錯誤],然後按一下 [停止隱藏錯誤]。 選取的隱藏錯誤將會在下一次執行驗證時出現。 |
在 [錯誤清單] 視窗中還原所有隱藏的錯誤 |
以滑鼠右鍵按一下 [錯誤清單] 視窗中的任何位置、指向 [管理驗證錯誤],然後按一下 [顯示所有隱藏的錯誤]。 |
在 [錯誤清單] 視窗中隱藏所有隱藏的錯誤 |
以滑鼠右鍵按一下 [錯誤清單] 視窗中的任何位置、指向 [管理驗證錯誤],然後按一下 [隱藏所有隱藏的錯誤]。 |
在本機組建執行期間自動驗證程式碼
如果您要在每次執行本機組建時自動驗證程式碼,請使用此方法。
若要從本機組建自動驗證程式碼
- 使用文字編輯器來開啟模型專案 (.modelproj) 檔案,然後加入下列屬性:
<ValidateArchitecture>true</ValidateArchitecture>
-或-
在 [方案總管] 中,以滑鼠右鍵按一下包含一個或多個圖層圖表的模型專案,然後按一下 [屬性]。
在 [屬性] 視窗中,將模型專案的 [驗證架構] 屬性設為 [True]。
這會將模型專案納入驗證程序中。
在 [方案總管] 中,按一下要用於驗證作業的圖層圖表 (.layerdiagram) 檔案。
在 [屬性] 視窗中,確定圖表的 [建置動作] 屬性已設為 [驗證]。
這會將圖層圖表納入驗證程序中。
如需了解驗證錯誤的詳細資訊,請參閱認識圖層驗證錯誤。 若要管理錯誤,請參閱管理驗證錯誤。
在 Team Foundation Build 執行期間自動驗證程式碼
若要避免程式碼的變更與預定的設計產生衝突,請將圖層驗證納入使用 Team Foundation Build 執行的組建和閘道簽入,您可以建立自訂 MSBuild 工作來指定此作業。 請使用組建報告收集驗證錯誤。
如需 Team Foundation Build 的詳細資訊,請參閱下列主題:
如需如何建立閘道簽入組建的詳細資訊,請參閱定義閘道簽入組建來驗證變更。
若要在執行 Team Foundation Build 時驗證程式碼
在 [Team 總管] 中,按兩下組建定義,然後按一下 [處理序]。
在 [建置流程參數] 底下,展開 [編譯],然後在 [MSBuild 引數] 參數中輸入下列內容:
/p:ValidateArchitecture=true
如需詳細資訊,請參閱使用預設範本定義組建。
不支援驗證的成品
不支援根據圖層圖表進行驗證的成品包括 C++ 專案、網站、Office 文件和純文字檔。 雖然您可以將這類成品連結至圖層,不過驗證程序將會忽略它們。 對於連結至個別圖層之專案或組件的參考,如果這些圖層之間沒有任何相依性,則不會出現驗證錯誤。 除非程式碼使用這些參考,否則不會考量此類參考的相依性。
若要確認成品是否支援驗證
在圖層圖表上,選取一個或多個圖層、以滑鼠右鍵按一下選取範圍,然後按一下 [檢視連結]。
在 [圖層總管] 中,查看 [支援驗證] 資料行。
如果成品連結的值為 false,則表示該成品不支援驗證。
疑難排解圖層驗證的問題
下列表格描述圖層驗證的問題及其解決方式。 這些問題不同於因程式碼與設計衝突而導致的錯誤。 如需這些錯誤的詳細資訊,請參閱認識圖層驗證錯誤。
問題 |
可能的原因 |
解決方式 |
---|---|---|
發生非預期的驗證錯誤。 |
若圖層圖表是從方案總管中的其他圖層圖表或是從相同模型專案中的圖層圖表複製來的,系統即不會對此圖層圖表進行驗證。 以這種方式複製的圖層圖表所包含的參考會與原始圖層圖表相同。 |
|