HOW TO:從成品建立圖層圖表

在 Visual Studio Ultimate 中,您可使用圖層圖表視覺化系統的高階架構,以及確定程式碼與設計一致。若要執行這項工作,請將 Visual Studio 方案中的成品組織並關聯成為邏輯和抽象的群組,也就是「圖層」(Layer)。這些圖層會描述成品執行的主要工作或系統的主要元件。

圖層之間的箭號代表「相依性」(Dependency),其表示圖層是否可以使用其他圖層中的功能。 若要在程式碼中強制使用架構條件約束,請在圖表上描述預期的相依性,然後根據圖表驗證程式碼。 以這種方式使用圖層圖表,可讓程式碼更容易了解、更新、重複使用和維護。

圖層圖表上的項目

如需圖層圖表的詳細資訊,請參閱下列主題:

本主題內容

  • 建立圖層圖表。

  • 從現有的成品建立圖層。

  • 管理圖層與成品之間的連結。

  • 對現有的相依性進行反向工程。

  • 更新圖層圖表以顯示預期的設計。

  • 變更圖表上的項目外觀。

建立圖層圖表

圖層圖表必須建立在模型專案內。 您可以將新圖層圖表加入到現有模型專案,或在方案中為新圖層圖表建立新模型。

若要將新圖層圖表加入到現有模型專案

  1. 按一下 [架構] 功能表上的 [新增圖表]。

  2. 在 [範本] 底下,按一下 [圖層圖表]。

  3. 為圖表命名。

  4. 在 [加入至模型專案] 中,瀏覽並選取方案中的現有模型專案。

    -或-

    按一下 [建立新模型專案],將新的模型專案加入至方案。

    注意事項注意事項

    圖層圖表必須存在於模型專案之內。 但是,您可以將它連結到存在於方案中任何位置的成品。

您也可以在相同模型專案中複製現有圖層圖表。

注意事項注意事項

不要從模型專案將現有圖層圖表加入、拖曳、複製或到其他模型專案或方案中的其他位置。 以此方法所複製的圖層圖表會和原始圖表擁有相同的參考,即使您已修改此圖表也一樣。 這樣會導致圖層驗證無法正確執行,同時可能會造成其他問題,例如項目遺失或嘗試開啟圖表時發生其他錯誤。

若要複製圖層圖表,請執行下列步驟:

若要複製現有圖層圖表

  1. 將新圖層圖表加入至模型專案。

  2. 將來源圖層圖表中的項目複製到新圖層圖表。

從成品建立圖層

您可以從 Visual Studio 方案中的成品 (例如,專案、程式碼檔、命名空間、類別和方法) 建立圖層。 這樣會自動建立這些圖層和成品之間的連結,這些項目會納入圖層驗證程序中。 您也可以將圖層連結到特定種類的成品,這種成品不支援圖層驗證。 例如,您可將圖層連結到像是 Word 文件或 PowerPoint 簡報等檔案。 這種做法有助於將圖層與規格或計劃相關聯。若要了解連結的成品是否支援驗證,請開啟 [圖層總管],然後檢查成品的 [支援驗證] 屬性。 如需詳細資訊,請參閱管理成品的連結。

每個圖層是以矩形顯示在圖表上,其中可以包含巢狀圖層,這些巢狀圖層會描述更詳細的工作。 如需圖層模式的詳細資訊,請造訪典範與實例網站 (英文)。

圖層上的數字表示圖層連結的成品數目。 然而,當您閱讀這個數字時,請記住下列各項:

  • 如果圖層連結的成品有包含其他成品,但圖層未直接連結這些其他成品,則數字將只包含連結的成品。 然而,在圖層驗證期間會加入其他成品以進行分析。

    例如,如果圖層連結到單一命名空間,即使命名空間包含類別,連結的成品數目仍為 1。 如果圖層也有命名空間中每個類別的連結,則數字將包含這些已連結的類別。

  • 如果圖層包含已連結到成品的其他圖層,即使此容器圖層上的數字未包含那些成品,容器圖層也會連結到那些成品。

當您建立圖層圖表時,可能會建立相依性圖形來協助探索和了解程式碼。 這些圖形可以協助您找出程式碼中的叢集、模式、自然圖層和相依性。 讓您更輕鬆地將成品指派給圖層。 您可能也會使用 [架構總管] 探索命名空間和類別 (這通常會正確對應至現有的圖層)。 然後,您就可以使用圖層圖表來協助更新程式碼。

如需詳細資訊,請參閱下列主題:

使用下列工作來建立圖層:

若要

請依照下列步驟:

建立單一成品的圖層

  1. 從下列任何來源,將成品拖曳至圖層圖表:

  2. 重新命名圖層以反映相關程式碼或成品的責任。

為所有選取的成品建立單一圖層

同時將所有成品拖曳至圖層。

圖層隨即出現在圖表上,並且連結到所有成品。

為每個選取的成品建立圖層

按住 SHIFT 鍵不放,同時將所有成品拖曳至圖層圖表。

注意事項注意事項
如果您使用 SHIFT 鍵來選取某個範圍的項目,請在選取成品之後放開該鍵。將成品至拖曳圖表時,再次按住該鍵不放。

每個成品的圖層隨即出現在圖表上,並且連結到個別成品。

將成品加入至圖層

將成品拖曳至圖層。

建立新的未連結圖層

在 [工具箱] 中,展開 [圖層圖表] 區段,然後將 [圖層] 拖曳至圖層圖表。

若要加入多個圖層,請按兩下 [圖層] 工具。 當您完成後,請按一下 [指標] 工具,或按 ESC 鍵。

-或-

以滑鼠右鍵按一下圖層圖表、指向 [加入],然後按一下 [圖層]。

建立巢狀圖層

將現有的圖層拖曳至另一個圖層上。

-或-

以滑鼠右鍵按一下圖層、指向 [加入],然後按一下 [圖層]。

建立包含兩個或多個現有圖層的新圖層

選取圖層、以滑鼠右鍵按一下選取的圖層,然後按一下 [群組]。

變更圖層的色彩

將圖層的 [色彩] 屬性設定為所要的色彩。

指定與圖層關聯的成品不可屬於指定的命名空間

在圖層的 [Forbidden Namespaces] 屬性中輸入命名空間。 請使用分號 (;) 來分隔命名空間。

指定與圖層關聯的成品不可相依於指定的命名空間

在圖層的 [Forbidden Namespace Dependencies] 屬性中輸入命名空間。 請使用分號 (;) 來分隔命名空間。

指定與圖層關聯的成品必須屬於其中一個指定的命名空間

在圖層的 [Required Namespaces] 屬性中輸入命名空間。 請使用分號 (;) 來分隔命名空間。

管理圖層與成品之間的連結

  1. 在圖層圖表上,以滑鼠右鍵按一下圖層,然後按一下 [檢視連結]。

    [圖層總管] 會顯示所選取圖層的成品連結。

  2. 使用下列工作來管理這些連結:

若要

在圖層總管中

刪除圖層與成品之間的連結

以滑鼠右鍵按一下成品連結,然後按一下 [刪除]。

將連結從某個圖層移到另一個圖層

將成品連結拖曳至圖表上的現有圖層。

-或-

  1. 以滑鼠右鍵按一下成品連結,然後按一下 [剪下]。

  2. 在圖層圖表上,以滑鼠右鍵按一下圖層,然後按一下 [貼上]。

將連結從某個圖層複製到另一個圖層

  1. 以滑鼠右鍵按一下成品連結,然後按一下 [複製]。

  2. 在圖層圖表上,以滑鼠右鍵按一下圖層,然後按一下 [貼上]。

從現有的成品連結建立新的圖層

將成品連結拖曳至圖表上的空白區域。

確認連結的成品支援針對圖層圖表進行驗證。

查看成品連結的 [支援驗證] 資料行。

對現有的相依性進行反向工程

只要與某個圖層關聯的成品參考到與另一個圖層關聯的成品,相依性便會存在。 例如,某個圖層中的類別會宣告在另一個圖層中具有類別的變數。 對於連結到圖表上之圖層的成品,您可以就其現有相依性進行反向工程。

注意事項注意事項

您無法針對特定種類的成品進行其相依性的反向工程。 例如,對連結到文字檔的圖層進行反向工程時,無法找出與該圖層之間的任何相依性。 若要查看哪些成品具有可施以反向工程的相依性,請在一個或多個圖層上按一下滑鼠右鍵,然後按一下 [檢視連結]。 在 [圖層總管] 中,檢查 [支援驗證] 資料行。 如果成品的這個資料行顯示 [False],則無法進行該成品的相依性反向工程。

若要對圖層之間的現有相依性進行反向工程

  • 選取一個或多個圖層、以滑鼠右鍵按一下選取的圖層,然後按一下 [產生相依性]。

通常,您會看到一些不應該存在的相依性。 您可以編輯這些相依性,以便與預期的設計保持一致。

更新圖表以顯示預期的設計

若要顯示計劃進行的變更或是所需的架構,請更新圖層圖表。

若要

請執行這些步驟

刪除不應該存在的相依性

按一下相依性,然後按下 DELETE

變更或限制相依性的方向

設定其 [Direction] 屬性。

建立新的相依性

使用 [相依性] 和 [雙向相依性] 工具。

若要繪製多個相依性,請按兩下工具。 當您完成後,請按一下 [指標] 工具,或按 ESC 鍵。

指定與圖層關聯的成品不可相依於指定的命名空間

在圖層的 [Forbidden Namespace Dependencies] 屬性中輸入命名空間。 請使用分號 (;) 來分隔命名空間。

指定與圖層關聯的成品不可屬於指定的命名空間

在圖層的 [Forbidden Namespaces] 屬性中輸入命名空間。 請使用分號 (;) 來分隔命名空間。

指定與圖層關聯的成品必須屬於其中一個指定的命名空間

在圖層的 [Required Namespaces] 屬性中輸入命名空間。 請使用分號 (;) 來分隔命名空間。

變更圖表上的項目外觀

為協助您識別圖層和相依性,並且方便與小組成員討論相關內容,請以下列方式編輯圖表的外觀和配置:

  • 變更圖層的大小、圖案和位置。

  • 變更圖層和相依性的色彩。

    1. 選取圖層或相依性。

    2. 以滑鼠右鍵按一下選取的圖層或相依性,然後按一下 [屬性]。

    3. 在 [屬性] 視窗中,變更 [色彩] 屬性。

請參閱

概念

視覺化現有的程式碼