共用方式為


HOW TO:定義要擴充 UML 的設定檔

在 Visual Studio Ultimate 中,您可以定義「UML 設定檔」(UML Profile) 來自訂標準模型項目,以用於特定用途。 設定檔會定義數個「UML 造型」(UML Stereotype)。 造型可用於擴充項目的屬性清單。

有數個設定檔會連同 Visual Studio Ultimate 一併安裝。 如需這些設定檔以及如何套用造型的詳細資訊,請參閱使用設定檔和造型自訂您的模型

您可以定義自己的設定檔,以適應 UML,並將其擴充到您自己的商務領域或架構。 例如:

  • 如果您經常定義網站,則您可以定義自己的設定檔,以提供可套用至類別圖表中類別的 «WebPage» 造型。 您可以使用類別圖表來計劃網站。 每一個 «WebPage» 類別都應有網頁內容、樣式等額外的屬性。

  • 如果您開發銀行軟體,則您可以定義提供 «Account» 造型的設定檔。 然後,您可以使用類別圖表來定義不同類型的帳戶,並顯示這些帳戶之間的關聯性。

您可以將自己的設定檔散發給小組。 每個小組成員都可以安裝您的設定檔。 這可讓他們建立使用其造型的模型,並對這些造型進行編輯。

注意事項注意事項

如果您在正編輯的模型中套用設定檔的造型,然後將該模型與其他人員共用,則這些人員應該在各自的電腦上安裝相同的設定檔。 否則,他們看不到您已經使用的造型。

設定檔通常是較大型 Visual Studio 擴充功能的一部分。 例如,您可以定義命令,將模型的某些部分轉譯為程式碼。 您可以定義設定檔,使用者必須將該設定檔套用至他們想要轉譯的封裝。 您應在單一的 Visual Studio 擴充功能中散發新命令和設定檔。

您還可以定義設定檔的各種當地語系化版本。 載入您擴充功能的使用者會看到適合於各自文化特性的版本。

如何定義設定檔

若要定義 UML 設定檔

  1. 建立新的 XML 檔案,將其副檔名命名為 .profile。

  2. 依據設定檔的結構中所述的方針,加入造型定義。

  3. 將設定檔加入 Visual Studio 擴充功能 (.vsix 檔案)。 您可以建立設定檔的新擴充功能,也可以將設定檔加入現有的擴充功能。

    請參閱下一節如何將設定檔加入 Visual Studio 擴充功能。

  4. 在電腦上安裝擴充功能。

    1. 按兩下擴充功能檔案,其副檔名為 .vsix。

    2. 重新啟動 Visual Studio。

  5. 確認已經安裝設定檔。

    1. 在 [UML 總管] 中,選取模型。

    2. 在 [屬性] 視窗中,按一下 [設定檔] 屬性。 設定檔即會出現在功能表中。 設定設定檔旁邊的核取記號。

    3. 選取設定檔要為其定義造型的項目。 在 [屬性] 視窗中,按一下 [造型] 屬性。 造型就會出現在清單中。 設定其中一個造型的核取記號。

    4. 如果您的設定檔為這個造型定義其他屬性,請展開造型屬性加以查看。

  6. 將擴充功能檔案傳送至 Visual Studio 的其他使用者,以安裝在各自的電腦上。

如何將設定檔加入 Visual Studio 擴充功能

若要安裝設定檔,並允許您將其傳送給其他使用者,您必須將設定檔加入 Visual Studio 擴充功能。 如需詳細資訊,請參閱部署 Visual Studio 擴充功能 (英文)。

若要在新 Visual Studio 擴充功能中定義設定檔

  1. 建立 Visual Studio 擴充功能專案。

    注意事項注意事項

    您必須已經安裝 Visual Studio SDK 才能使用此程序。

    1. 在 [檔案] 功能表上,指向 [新增],然後按一下 [專案]。

    2. 在 [新增專案] 對話方塊的 [已安裝的範本] 下,展開 [Visual C#],並按一下 [擴充性],然後按一下 [VSIX 專案]。 設定專案名稱,然後按一下 [確定]。

  2. 將設定檔加入至專案。

    • 在 [方案總管] 中,以滑鼠右鍵按一下專案,並指向 [加入],然後按一下 [現有項目]。 在對話方塊中找到設定檔。
  3. 設定該設定檔的 [複製到輸出] 屬性。

    1. 在 [方案總管] 中,以滑鼠右鍵按一下設定檔,然後按一下 [屬性]。

    2. 在 [屬性] 視窗中,將 [複製到輸出目錄] 屬性設成 [永遠複製]。

  4. 在 [方案總管] 中,開啟 source.extension.vsixmanifest。

    該檔案即會在擴充功能資訊清單編輯器中開啟。

  5. 設定 [ID] 和 [產品名稱] 欄位。 ID 必須是唯一的。

  6. 在 [內容] 下,設定描述設定檔的列:

    • 按一下 [加入內容]。 請以下列方式設定 [加入內容] 對話方塊中的欄位。

    • 將 [選取內容類型] 設為 [自訂延伸類型]

    • 將 [類型] 設為 Microsoft.VisualStudio.UmlProfile

    • 按一下 [專案中檔案],然後選取設定檔的名稱,例如 MyProfile.profile

  7. 建置專案。

  8. 在 [Windows 檔案總管] 中,開啟 .\bin\Debug.\bin\Release 資料夾以尋找 .vsix 檔案。 這是 Visual Studio 擴充功能檔案。 可以將該檔案安裝在您的電腦上,並傳送給其他 Visual Studio 使用者。

  9. 若要安裝擴充功能:

    1. 按兩下 .vsix 檔案。 Visual Studio 擴充功能安裝程式即會啟動。

    2. 重新啟動執行中的任何 Visual Studio 執行個體。

如果尚未安裝 Visual Studio SDK,則可以使用下列替代程序進行小型擴充功能的安裝。

若要不使用 Visual Studio SDK 來定義設定檔擴充功能

  1. 建立包含下列三個檔案的 Windows 目錄:

    • YourProfile.profile

    • extension.vsixmanifest

    • [Content_Types].xml - 輸入這裡顯示的這個名稱,含方括弧

  2. 編輯 [Content_Types].xml,以包含下列文字。 請注意,它針對每個副檔名都包含一個項目。

    <?xml version="1.0" encoding="utf-8"?>
    <Types xmlns="https://schemas.openxmlformats.org/package/2006/content-types">
      <Default Extension="profile" ContentType="application/octet-stream" />
      <Default Extension="vsixmanifest" ContentType="text/xml" />
    </Types>
    
  3. 複製現有的 extension.vsixmanifest,並使用 XML 編輯器對其進行編輯。 更改 ID、名稱和內容節點。

    • 在以下目錄中,可以找到 extension.vsixmanifest 的範例:

      drive**:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\UmlProfiles**

    • 內容節點應該如下所示:

      <Content>
        <CustomExtension Type="Microsoft.VisualStudio.UmlProfile"
        >YourProfile.Profile</CustomExtension>
      </Content>
      
  4. 將這三個檔案壓縮成 .zip 檔。

    在 [Windows 檔案總管] 中,選取這三個檔案並以滑鼠右鍵按一下,然後指向 [傳送到] 並按一下 [壓縮的 (zipped) 資料夾]。

  5. 重新命名這個壓縮檔,將其副檔名從 .zip 變更為 .vsix。

  6. 若要在具有適當 Visual Studio 版本的任何電腦上安裝設定檔,請按兩下 .vsix 檔案。

若要從 Visual Studio 擴充功能安裝 UML 設定檔

  1. 在 [Windows 檔案總管] 中按兩下 .vsix 檔案,或在 Visual Studio 中開啟這個檔案。

  2. 在出現的對話方塊中按一下 [安裝]。

  3. 若要解除安裝或暫時停用擴充功能,請從 [工具] 功能表開啟 [擴充管理員]。

如何定義當地語系化的設定檔

您可以針對不同的文化特性和語言定義不同的設定檔,並將這些設定檔封裝到同一個擴充功能中。 使用者載入您的擴充功能時,他們會看到您針對其文化特性所定義的設定檔。

您必須始終提供預設的設定檔。 如果尚未針對該使用者的文化特性定義設定檔,則該使用者會看到預設的設定檔。

若要定義當地語系化的設定檔

  1. 按照先前如何定義設定檔和如何將設定檔加入 Visual Studio 擴充功能這兩節所述,建立設定檔。 這是預設的設定檔,在不提供當地語系化設定檔的任何安裝中將使用這個設定檔。

  2. 在預設之設定檔的目錄中加入新的目錄。

    注意事項注意事項

    如果是在使用 Visual Studio 擴充功能專案建置擴充功能,請使用 [方案總管] 將新的資料夾加入專案。

  3. 將新目錄的名稱變更為當地語系化文化特性的 ISO 簡短代碼,例如 bg 代表保加利亞文,fr 代表法文。 您應該使用中性文化特性代碼,通常為兩個字母,而不是特定文化特性代碼 (例如 fr-CA)。 如需文化特性代碼的詳細資訊,請參閱 CultureInfo.GetCultures 方法 (英文),該方法會提供文化特性代碼的完整清單。

  4. 將預設之設定檔的複本加入新目錄。 請勿變更其檔名。

    典型的 Visual Studio 擴充功能資料夾在其建置或壓縮成 .vsix 檔案之前,應該包含下列資料夾和檔案:

    extension.vsixmanifest

    MyProfile.profile

    fr\MyProfile.profile

    de\MyProfile.profile

    注意事項注意事項

    您不得向 extension.vsixmanifest 插入設定檔當地語系化版本的參考。 複製的設定檔名稱必須與父資料夾中的設定檔名稱相同。

  5. 編輯設定檔的新複本,將使用者可以看到的所有部分 (例如 displayName 屬性) 翻譯成目標語言。

  6. 您可以針對多個文化特性,建立額外的文化特性資料夾和當地語系化設定檔。

  7. 透過建置擴充功能專案或壓縮所有檔案 (如先前章節所述),來建置 Visual Studio 擴充功能。

設定檔的結構

UML 設定檔的 XSD 檔案可以在下列範例中找到:設定造型和設定檔 XSD (英文)。 若要協助您編輯設定檔,請將 .xsd 檔案安裝到下列位置:

%ProgramFiles%\Microsoft Visual Studio 10.0\Xml\Schemas

本節使用 C# 設定檔做為範例。 下列可以看到完整的設定檔定義:

drive**:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\UmlProfiles\CSharp.profile**

根據您的安裝,此路徑的第一個部分可能會不同。

如需 .NET 設定檔的詳細資訊,請參閱 UML 模型的標準造型

UML 設定檔定義的主要部分

每個設定檔都包含下列內容:

<?xml version="1.0" encoding="utf-8"?>
<profile dslVersion="1.0.0.0" 
       name="CSharpProfile" displayName="C# Profile" 
       xmlns="https://schemas.microsoft.com/UML2.1.2/ProfileDefinition">
  <stereotypes>...</stereotypes>
  <metaclasses>...</metaclasses>
  <propertyTypes>...</propertyTypes>
</profile>
注意事項注意事項

名為 name 的屬性不可包含空格或標點符號。 屬性 displayName 會出現在使用者介面中,且應為有效 XML 字串。

每個設定檔都包含三個主要部分。 依相反的順序,它們分別是:

  • <propertyTypes> - 一系列型別,用於在造型部分所定義的屬性。

  • <metaclasses> - 一系列模型項目型別,這個設定檔中的造型會套用至這些型别,例如 IClass、IInterface、IOperation、IDependency。

  • <stereotypes> - 造型定義。 每個定義都包含加入至目標模型項目之屬性的名稱和型別。

屬性型別

<propertyTypes> 部分會宣告一系列型別,用於 <stereotypes> 部分中的屬性。 屬性型別有兩種:外部和列舉。

外部型別會宣告標準 .NET 型別的完整限定名稱:

<externalType name="System.String" />

列舉型別會定義一組常值:

    <enumerationType name="PackageVisibility">
      <enumerationLiterals>
        <enumerationLiteral name="internal" displayName="internal"  />
        <enumerationLiteral name="protectedinternal" displayName="protected internal" />
      </enumerationLiterals>
    </enumerationType>

Metaclass

<metaclasses> 部分是一系列模型項目型別,您可以為這些型別定義這個設定檔中的造型:

<metaclass 
      name="Microsoft.VisualStudio.Uml.Classes.IClass" />
<metaclass
      name="Microsoft.VisualStudio.Uml.Classes.IInterface" />
<metaclass
      name="Microsoft.VisualStudio.Uml.Components.IComponent" />

如需您可以用做 Metaclass 之模型項目和關聯性型別的完整清單,請參閱模型項目型別。

造型定義

<stereotypes> 部分包含一個或多個造型定義:

    <stereotype name="CSharpClass" displayName="C# Class"> ...

每個造型都會列出其可以套用至的一個或多個模型項目或關聯性型別。 您可以提供基底型別的名稱,以包含其所有衍生型別。 例如,如果指定 Microsoft.VisualStudio.Uml.Classes.IType,則可以將造型套用至 IClass、IInterface、IEnumeration 和項目的多種其他型別。

      <metaclasses>
        <metaclassMoniker name=
         "/CSharpProfile/Microsoft.VisualStudio.Uml.Classes.IClass" />
      </metaclasses>

metaclassMoniker 的 name 屬性是 <metaClasses> 區段中某個項目的連結。

注意事項注意事項

Moniker 名稱必須以 /yourProfileName/ 開頭,其中,yourProfileName 定義於設定檔 (在此範例中為 "CSharpProfile") 的 name 屬性中。 Moniker 必須以 Metaclass 區段中其中一個項目的名稱結尾。

每個造型都可列出該造型加入之模型項目的零個或多個屬性,該模型項目是套用該造型的任何模型項目。 <propertyType> 包含到 <propertyTypes> 部分所定義之其中一個型別的連結。 該連結必須是參考 <externalType>, 的 <externalTypeMoniker> 或參考 <enumerationType> 的 <enumerationTypeMoniker>。 同樣地,該連結以設定檔的名稱做為前置詞。

      <properties>
        <property name="IsStatic" 
                displayName="Is Static" defaultValue="false">
          <propertyType>
    <externalTypeMoniker 
                   name="/CSharpProfile/System.Boolean" />
          </propertyType>
        </property>
        <property name="PackageVisibility" 
                  displayName="Package Visibility"
                  defaultValue="internal">
          <propertyType>
            <enumerationTypeMoniker 
                  name="/CSharpProfile/PackageVisibility"/>
          </propertyType>
        </property>
      </properties>
    </stereotype>

模型項目型別

可讓您定義造型的型別集合,列示於模型項目型別中。

疑難排解

  • 造型未顯示 UML 模型。
    您必須選取封裝或模型中的設定檔。 造型就會出現在封裝或模型內的項目上。 如需詳細資訊,請參閱 HOW TO:將造型加入至模型項目

  • 當開啟 UML 模型時,出現下列錯誤:VS1707: The following profiles cannot be loaded because a serialization error occurred: MyProfile.profile

    1. 驗證 .profile 的基本 XML 語法正確無誤。

    2. 確認每個 Moniker 名稱均使用 /profileName/nodeName 的格式。 profileName 是根設定檔節點中的名稱屬性值。 nodeName 是 Metaclass、externalType 或 enumerationType 的名稱屬性值。

    3. 確定語法如此處所述,並且列示於 drive**:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\UmlProfiles\** 中。

    4. 解除安裝錯誤的擴充功能。 按一下 [工具] 功能表上的 [擴充管理員]。

      • 如果未出現擴充功能,請檢視下一個項目。
    5. 重建 VSIX 檔案,並在 [Windows 檔案總管] 中加以開啟,予以重新安裝。 重新啟動 Visual Studio。

  • 擴充功能未出現在 [擴充管理員] 中,且在您嘗試加以重新安裝時出現下列訊息:The extension is already installed to all applicable products.

    1. 從 LocalAppData\Microsoft\VisualStudio\10.0\Extensions\ 的子資料夾中移除擴充檔

      • 若要檢視 LocalAppData,您必須在 Windows 檔案總管資料夾選項的 [檢視] 索引標籤中設定 [顯示所有檔案和資料夾]。

      • LocalAppData 通常位於 C:\Users\userName\AppData\Local\ 中

    2. 重新啟動 Visual Studio。

請參閱

工作

HOW TO:將造型加入至模型項目

概念

UML 模型的標準造型

其他資源

使用設定檔和造型自訂您的模型

範例:依造型為 UML 項目加上色彩

範例:設定造型和設定檔 XSD