共用方式為


[撰寫中。Vsct 檔案

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

本文件說明如何撰寫.vsct 檔加入 Visual Studio 整合式的開發環境 (IDE) 中的功能表項目、 工具列和其他使用者介面 (UI) 項目。 當您將 UI 項目加入至 Visual Studio 套件 (VSPackage) 已經沒有.vsct 檔,請使用下列步驟。

針對新的專案,我們建議您使用 Visual Studio 封裝範本,因為它會產生.vsct 檔,根據您的選擇,已經有必要的項目,功能表命令、 工具視窗,或自訂編輯器。 您可以修改此.vsct 檔案,以符合需求的 VSPackage。 如需如何修改.vsct 檔的詳細資訊,請參閱中的範例擴充的功能表和命令

撰寫的檔案

撰寫.vsct 檔中這三個階段︰ 建立檔案和資源的結構、 宣告的 UI 項目、 將 UI 項目放在 IDE 中,並加入任何特殊的行為。

檔案結構

.Vsct 檔的基本結構是CommandTable根項目,其中包含命令項目和符號項目。

若要建立的檔案結構
  1. .vsct 將檔案新增至您的專案中的步驟How to︰ 建立。Vsct 檔案

  2. 加入必要的命名空間CommandTable元素,如下列範例所示。

    <CommandTable xmlns="https://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable"   
        xmlns:xs="http://www.w3.org/2001/XMLSchema">  
    
  3. CommandTable項目,加入Commands裝載自訂功能表、 工具列、 命令群組和命令的所有項目。 這樣可以載入自訂的 UI 項目,Commands項目必須具有其Package屬性設為封裝的名稱。

    之後Commands項目,加入Symbols項目來定義封裝和名稱的 Guid,以及 UI 項目的命令 Id。

包括 Visual Studio 資源

使用Extern項目來存取定義 Visual Studio 命令和功能表在 IDE 中放入您的 UI 項目所需的檔案。 如果您將使用您的封裝外部所定義的命令,使用UsedCommands通知 Visual Studio 的項目。

包含 Visual Studio 資源
  1. 在頂端CommandTable項目,加入一個Extern項目,每個外部檔案參考,並設定href屬性設定為檔案的名稱。 您可以參考下列標頭檔來存取 Visual Studio 資源︰

    • Stdidcmd.h,Visual Studio 所公開的所有命令定義識別碼。

    • Vsshlids.h,包含 Visual Studio 功能表的命令識別碼。

  2. 如果您的封裝呼叫 Visual Studio 或其他封裝所定義的任何命令,將新增UsedCommands項目之後Commands項目。 填入此項目UsedCommand項目,每個命令呼叫也就不是屬於您的封裝。 設定guidid屬性UsedCommand呼叫命令的 GUID 和 ID 值的項目。 如需如何尋找 Guid 和 Id Visual Studio 的 [命令的詳細資訊,請參閱Guid 和 Id 的 Visual Studio 命令。 若要從其他封裝呼叫命令,使用 GUID 和命令,這些封裝的.vsct 檔中所定義的識別碼。

宣告 UI 項目

將所有新的 UI 項目中宣告Symbols.vsct 檔的區段。

若要宣告 UI 項目
  1. Symbols項目,將三個GuidSymbol項目。 每個GuidSymbol項目具有name屬性和value屬性。 設定name屬性,讓它反映出之項目的用途。 value屬性會取得 GUID。 (在產生的 GUID,工具] 功能表上,按一下 [建立 GUID,然後選取登錄格式。)

    第一個GuidSymbol項目代表您的封裝,且通常沒有子系。 第二個GuidSymbol元素代表命令集,並將包含所有定義您的功能表、 群組和命令的符號。 第三個GuidSymbol項目代表您的映像存放區,並且包含所有命令圖示的符號。 如果您有沒有使用圖示的命令,您可以省略第三個GuidSymbol項目。

  2. GuidSymbol項目,表示您的命令集,新增一或多個IDSymbol項目。 每一種代表功能表、 工具列、 群組或您要加入至 UI 的命令。

    每個IDSymbol元素中,將name屬性設定為您的名稱會用來參考對應的功能表、 群組或命令,然後設定value十六進位數字表示其命令 id 的項目。 任兩個IDSymbol有相同的父代的項目可以有相同的值。

  3. 如果任何 UI 項目需要圖示,將IDSymbol到每個圖示的項目GuidSymbol項目,表示您的映像存放區。

將 UI 項目放在 IDE 中

功能表項目,群組項目,以及按鈕項目包含所有的功能表、 群組和您的封裝中定義的命令定義。 將這些功能表、 群組和命令放在 IDE 中使用項目,這是部分 UI 項目定義,或使用CommandPlacement項目,是定義在其他位置。

每個MenuGroup,和Button項目具有guid屬性和id屬性。 一律設guid屬性,以符合名稱GuidSymbol項目,表示您的命令集,並設定id屬性的名稱IDSymbol項目,表示您的功能表、 群組或在命令Symbols一節。

若要定義 UI 項目
  1. 如果您要定義任何新的功能表、 子功能表、 捷徑功能表或工具列,加入Menus項目Commands項目。 然後,針對要建立每個功能表上,新增功能表項目Menus項目。

    設定guidid屬性Menu項目,並將其設定type屬性設定為想要的類型。 您也可以設定priority屬性,以建立父群組中的功能表上的相對位置。

    注意

    priority屬性不適用於工具列和快顯功能表。

  2. 在 Visual Studio IDE 中的所有命令必須直接子系的功能表和工具列命令群組所都裝載。 如果您要新增新的功能表或工具列為 IDE,這些資料表必須包含新的命令群組。 您也可以新增至現有的功能表和工具列命令群組,以便您可以以視覺方式群組您的命令。

    當您新增新的命令群組時,您必須先建立Groups項目,然後將它加入群組針對每個命令群組的項目。

    設定guidid各自屬性Group項目,並將其設定priority屬性,以建立父功能表上的群組的相對位置。 如需詳細資訊,請參閱建立可重複使用群組的按鈕

  3. 如果您要在 IDE 中加入新的命令,將新增Buttons項目Commands項目。 然後,針對每個命令中,新增[] 按鈕](../Topic/Button%20Element.md)項目Buttons項目。

    1. 設定guidid各自屬性Button項目,並將其設定type屬性設定為想要的按鈕類型。 您也可以設定priority屬性,以建立父群組中的相對位置的命令。

      注意

      使用type="button"標準功能表命令和工具列上的按鈕。

    2. Button項目,加入字串包含項目ButtonText項目和CommandName項目。 ButtonText項目提供的功能表項目或工具列按鈕的工具提示文字標籤。 CommandName項目會提供要在命令中使用命令的名稱。

    3. 如果您的命令將會有一個圖示,建立圖示中的項目Button項目,並將其guidid屬性,將Bitmap圖示的項目。

      注意

      工具列按鈕必須圖示。

    如需詳細資訊,請參閱MenuCommands Vs。OleMenuCommands

  4. 如果您的命令的任何需要圖示,將點陣圖項目Commands項目。 然後,針對每個圖示,將點陣圖項目Bitmaps項目。 這是您用來指定點陣圖資源的位置。 如需詳細資訊,請參閱將圖示加入功能表命令

您可以依賴正確放置大部分的功能表、 群組和命令的父結構。 對於非常大的命令集,或當功能表、 群組或命令必須出現在多個位置中,我們建議您指定命令的位置。

仰賴 UI 項目放置在 IDE 中的父
  1. 對於典型的父建立Parent中每個項目MenuGroup,和Command您封裝中定義的項目。

    目標的Parent項目是功能表或群組將包含功能表、 群組或命令。

    1. 設定guid屬性的名稱為GuidSymbol定義的命令集的項目。 如果目標項目不是套件的一部分,使用 guid 的命令集,對應.vsct 檔中所定義。

    2. 設定id屬性,以符合id目標] 功能表或群組的屬性。 功能表和 Visual Studio 所公開的群組清單,請參閱Guid 和 Id 的 Visual Studio 功能表Guid 和 Id 的 Visual Studio 工具列

如果您有大量的 UI 項目放置在 IDE 中,或如果您有多個位置中應該會出現的項目,定義其放置在CommandPlacements項目,如下列步驟中所示。

若要將 UI 項目放置在 IDE 中使用命令位置
  1. 之後Commands項目,加入CommandPlacements項目。

  2. CommandPlacements項目,加入CommandPlacement的每個功能表、 群組或命令將項目。

    每個CommandPlacement項目或Parent項目會將一個功能表、 群組或命令放在一個 IDE 的位置。 UI 項目只能有一個父代,但也可能會有多個命令的位置。 若要將 UI 項目放在多個位置中,加入CommandPlacement針對每個位置的項目。

  3. 設定guidid各自屬性CommandPlacement項目,裝載的功能表或群組,就像您一樣Parent項目。 您也可以設定priority屬性,以建立 UI 項目相對的位置。

您可以混合放置的父和命令的位置。 不過,對於非常大的命令集,我們建議您使用只命令的位置。

加入特殊的行為

您可以使用CommandFlag項目來修改行為的功能表和命令,例如,若要變更其外觀和可見性。 命令會顯示使用時,也可能影響VisibilityConstraints,或藉由加入鍵盤快速鍵按鍵組合。 功能表和命令已經特定種類的特殊內建的行為。

若要新增特定的行為
  1. 若要顯示的 UI 項目只在特定 UI 內容,例如,在載入方案時,使用可見性條件約束。

    1. 之後Commands項目,加入VisibilityConstraints項目。

    2. 若要限制每個 UI 項目,將VisibilityItem項目。

    3. 每個VisibilityItem元素中,將guidid屬性給功能表、 群組,或命令,並將其設定context屬性至您想,UI 內容中所定義UIContextGuids80類別。 如需詳細資訊,請參閱VisibilityItem 項目

  2. 若要在程式碼中設定的可見性或可用性的 UI 項目,使用一或多個下列的命令旗標︰

    • DefaultDisabled

    • DefaultInvisible

    • DynamicItemStart

    • DynamicVisibility

    • NoShowOnMenuController

    • NotInTBList

    如需詳細資訊,請參閱命令旗標的項目

  3. 若要變更項目出現時,或以動態方式變更其外觀的方式,使用一或多個下列的命令旗標︰

    • AlwaysCreate

    • CommandWellOnly

    • DefaultDocked

    • DontCache

    • DynamicItemStart

    • FixMenuController

    • IconAndText

    • Pict

    • StretchHorizontally

    • TextMenuUseButton

    • 文字變更

    • TextOnly

    如需詳細資訊,請參閱命令旗標的項目

  4. 若要變更項目做出反應接收命令時,使用一或多個下列的命令旗標︰

    • AllowParams

    • CaseSensitive

    • CommandWellOnly

    • 篩選鍵

    • NoAutoComplete

    • NoButtonCustomize

    • NoKeyCustomize

    • NoToolbarClose

    • PostExec

    • RouteToDocs

    • TextIsAnchorCommand

    如需詳細資訊,請參閱命令旗標的項目

  5. 若要附加功能表相關的快速鍵功能表或功能表上的項目,將連字號字元 ('i ') 在ButtonText項目] 功能表或功能表項目。 在父功能表開啟時,後面連字號的字元是作用中的鍵盤快速鍵。

  6. 若要命令連接獨立於功能表上的鍵盤快速鍵,請使用按鍵組合。 如需詳細資訊,請參閱KeyBinding 項目

  7. 若要當地語系化功能表文字,請使用LocCanonicalName項目。 如需詳細資訊,請參閱字串項目

某些功能表和按鈕的類型包括特殊的行為。 下表描述一些特殊的功能表和按鈕類型。 對於其他類型,請參閱types屬性中的描述功能表項目Button 元素,和下拉式項目

下拉式方塊
下拉式方塊是可以使用工具列的下拉式清單。 若要加入下拉式方塊的 ui,建立組合中的項目Commands項目。 然後加入Combos元素Combo每個組合中加入的項目。 Combo元素具有相同的屬性和子系為Button項目,也有DefaultWidthidCommandList屬性。 DefaultWidth屬性設定為像素的寬度和idCommandList屬性指向用來填入下拉式方塊的命令 ID。 如需詳細資訊,請參閱Combo項目的文件。

MenuController
功能表控制器是具有該索引標籤旁邊的箭號按鈕。 按一下箭頭,即可開啟清單。 若要加入功能表控制器 ui,建立Menu項目並設定其type屬性設定為MenuControllerMenuControllerLatched,取決於您要的行為。 若要填入功能表控制站,將它設為父代Group項目。 功能表控制器將會顯示該群組的所有子系的下拉式清單上。

另請參閱

擴充的功能表和命令
Visual Studio 命令資料表 (。Vsct) 檔案
VSCT XML 結構描述參考