[撰寫中。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根項目,其中包含命令項目和符號項目。
若要建立的檔案結構
.vsct 將檔案新增至您的專案中的步驟How to︰ 建立。Vsct 檔案。
加入必要的命名空間
CommandTable
元素,如下列範例所示。<CommandTable xmlns="https://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
在
CommandTable
項目,加入Commands
裝載自訂功能表、 工具列、 命令群組和命令的所有項目。 這樣可以載入自訂的 UI 項目,Commands
項目必須具有其Package
屬性設為封裝的名稱。之後
Commands
項目,加入Symbols
項目來定義封裝和名稱的 Guid,以及 UI 項目的命令 Id。
包括 Visual Studio 資源
使用Extern項目來存取定義 Visual Studio 命令和功能表在 IDE 中放入您的 UI 項目所需的檔案。 如果您將使用您的封裝外部所定義的命令,使用UsedCommands通知 Visual Studio 的項目。
包含 Visual Studio 資源
在頂端
CommandTable
項目,加入一個Extern
項目,每個外部檔案參考,並設定href
屬性設定為檔案的名稱。 您可以參考下列標頭檔來存取 Visual Studio 資源︰Stdidcmd.h,Visual Studio 所公開的所有命令定義識別碼。
Vsshlids.h,包含 Visual Studio 功能表的命令識別碼。
如果您的封裝呼叫 Visual Studio 或其他封裝所定義的任何命令,將新增
UsedCommands
項目之後Commands
項目。 填入此項目UsedCommand項目,每個命令呼叫也就不是屬於您的封裝。 設定guid
和id
屬性UsedCommand
呼叫命令的 GUID 和 ID 值的項目。 如需如何尋找 Guid 和 Id Visual Studio 的 [命令的詳細資訊,請參閱Guid 和 Id 的 Visual Studio 命令。 若要從其他封裝呼叫命令,使用 GUID 和命令,這些封裝的.vsct 檔中所定義的識別碼。
宣告 UI 項目
將所有新的 UI 項目中宣告Symbols
.vsct 檔的區段。
若要宣告 UI 項目
在
Symbols
項目,將三個GuidSymbol項目。 每個GuidSymbol
項目具有name
屬性和value
屬性。 設定name
屬性,讓它反映出之項目的用途。value
屬性會取得 GUID。 (在產生的 GUID,工具] 功能表上,按一下 [建立 GUID,然後選取登錄格式。)第一個
GuidSymbol
項目代表您的封裝,且通常沒有子系。 第二個GuidSymbol
元素代表命令集,並將包含所有定義您的功能表、 群組和命令的符號。 第三個GuidSymbol
項目代表您的映像存放區,並且包含所有命令圖示的符號。 如果您有沒有使用圖示的命令,您可以省略第三個GuidSymbol
項目。在
GuidSymbol
項目,表示您的命令集,新增一或多個IDSymbol項目。 每一種代表功能表、 工具列、 群組或您要加入至 UI 的命令。每個
IDSymbol
元素中,將name
屬性設定為您的名稱會用來參考對應的功能表、 群組或命令,然後設定value
十六進位數字表示其命令 id 的項目。 任兩個IDSymbol
有相同的父代的項目可以有相同的值。如果任何 UI 項目需要圖示,將
IDSymbol
到每個圖示的項目GuidSymbol
項目,表示您的映像存放區。
將 UI 項目放在 IDE 中
功能表項目,群組項目,以及按鈕項目包含所有的功能表、 群組和您的封裝中定義的命令定義。 將這些功能表、 群組和命令放在 IDE 中使用父項目,這是部分 UI 項目定義,或使用CommandPlacement項目,是定義在其他位置。
每個Menu
, Group
,和Button
項目具有guid
屬性和id
屬性。 一律設guid
屬性,以符合名稱GuidSymbol
項目,表示您的命令集,並設定id
屬性的名稱IDSymbol
項目,表示您的功能表、 群組或在命令Symbols
一節。
若要定義 UI 項目
如果您要定義任何新的功能表、 子功能表、 捷徑功能表或工具列,加入
Menus
項目Commands
項目。 然後,針對要建立每個功能表上,新增功能表項目Menus
項目。設定
guid
和id
屬性Menu
項目,並將其設定type
屬性設定為想要的類型。 您也可以設定priority
屬性,以建立父群組中的功能表上的相對位置。注意
priority
屬性不適用於工具列和快顯功能表。在 Visual Studio IDE 中的所有命令必須直接子系的功能表和工具列命令群組所都裝載。 如果您要新增新的功能表或工具列為 IDE,這些資料表必須包含新的命令群組。 您也可以新增至現有的功能表和工具列命令群組,以便您可以以視覺方式群組您的命令。
當您新增新的命令群組時,您必須先建立
Groups
項目,然後將它加入群組針對每個命令群組的項目。設定
guid
和id
各自屬性Group
項目,並將其設定priority
屬性,以建立父功能表上的群組的相對位置。 如需詳細資訊,請參閱建立可重複使用群組的按鈕。如果您要在 IDE 中加入新的命令,將新增
Buttons
項目Commands
項目。 然後,針對每個命令中,新增[] 按鈕](../Topic/Button%20Element.md)項目Buttons
項目。設定
guid
和id
各自屬性Button
項目,並將其設定type
屬性設定為想要的按鈕類型。 您也可以設定priority
屬性,以建立父群組中的相對位置的命令。注意
使用
type="button"
標準功能表命令和工具列上的按鈕。在
Button
項目,加入字串包含項目ButtonText項目和CommandName項目。ButtonText
項目提供的功能表項目或工具列按鈕的工具提示文字標籤。CommandName
項目會提供要在命令中使用命令的名稱。如果您的命令將會有一個圖示,建立圖示中的項目
Button
項目,並將其guid
和id
屬性,將Bitmap
圖示的項目。注意
工具列按鈕必須圖示。
如需詳細資訊,請參閱MenuCommands Vs。OleMenuCommands。
如果您的命令的任何需要圖示,將點陣圖項目
Commands
項目。 然後,針對每個圖示,將點陣圖項目Bitmaps
項目。 這是您用來指定點陣圖資源的位置。 如需詳細資訊,請參閱將圖示加入功能表命令。
您可以依賴正確放置大部分的功能表、 群組和命令的父結構。 對於非常大的命令集,或當功能表、 群組或命令必須出現在多個位置中,我們建議您指定命令的位置。
仰賴 UI 項目放置在 IDE 中的父
對於典型的父建立
Parent
中每個項目Menu
,Group
,和Command
您封裝中定義的項目。目標的
Parent
項目是功能表或群組將包含功能表、 群組或命令。設定
guid
屬性的名稱為GuidSymbol
定義的命令集的項目。 如果目標項目不是套件的一部分,使用 guid 的命令集,對應.vsct 檔中所定義。設定
id
屬性,以符合id
目標] 功能表或群組的屬性。 功能表和 Visual Studio 所公開的群組清單,請參閱Guid 和 Id 的 Visual Studio 功能表或Guid 和 Id 的 Visual Studio 工具列。
如果您有大量的 UI 項目放置在 IDE 中,或如果您有多個位置中應該會出現的項目,定義其放置在CommandPlacements項目,如下列步驟中所示。
若要將 UI 項目放置在 IDE 中使用命令位置
之後
Commands
項目,加入CommandPlacements
項目。在
CommandPlacements
項目,加入CommandPlacement
的每個功能表、 群組或命令將項目。每個
CommandPlacement
項目或Parent
項目會將一個功能表、 群組或命令放在一個 IDE 的位置。 UI 項目只能有一個父代,但也可能會有多個命令的位置。 若要將 UI 項目放在多個位置中,加入CommandPlacement
針對每個位置的項目。設定
guid
和id
各自屬性CommandPlacement
項目,裝載的功能表或群組,就像您一樣Parent
項目。 您也可以設定priority
屬性,以建立 UI 項目相對的位置。
您可以混合放置的父和命令的位置。 不過,對於非常大的命令集,我們建議您使用只命令的位置。
加入特殊的行為
您可以使用CommandFlag項目來修改行為的功能表和命令,例如,若要變更其外觀和可見性。 命令會顯示使用時,也可能影響VisibilityConstraints,或藉由加入鍵盤快速鍵按鍵組合。 功能表和命令已經特定種類的特殊內建的行為。
若要新增特定的行為
若要顯示的 UI 項目只在特定 UI 內容,例如,在載入方案時,使用可見性條件約束。
之後
Commands
項目,加入VisibilityConstraints
項目。若要限制每個 UI 項目,將VisibilityItem項目。
每個
VisibilityItem
元素中,將guid
和id
屬性給功能表、 群組,或命令,並將其設定context
屬性至您想,UI 內容中所定義UIContextGuids80類別。 如需詳細資訊,請參閱VisibilityItem 項目。
若要在程式碼中設定的可見性或可用性的 UI 項目,使用一或多個下列的命令旗標︰
DefaultDisabled
DefaultInvisible
DynamicItemStart
DynamicVisibility
NoShowOnMenuController
NotInTBList
如需詳細資訊,請參閱命令旗標的項目。
若要變更項目出現時,或以動態方式變更其外觀的方式,使用一或多個下列的命令旗標︰
AlwaysCreate
CommandWellOnly
DefaultDocked
DontCache
DynamicItemStart
FixMenuController
IconAndText
Pict
StretchHorizontally
TextMenuUseButton
文字變更
TextOnly
如需詳細資訊,請參閱命令旗標的項目。
若要變更項目做出反應接收命令時,使用一或多個下列的命令旗標︰
AllowParams
CaseSensitive
CommandWellOnly
篩選鍵
NoAutoComplete
NoButtonCustomize
NoKeyCustomize
NoToolbarClose
PostExec
RouteToDocs
TextIsAnchorCommand
如需詳細資訊,請參閱命令旗標的項目。
若要附加功能表相關的快速鍵功能表或功能表上的項目,將連字號字元 ('i ') 在
ButtonText
項目] 功能表或功能表項目。 在父功能表開啟時,後面連字號的字元是作用中的鍵盤快速鍵。若要命令連接獨立於功能表上的鍵盤快速鍵,請使用按鍵組合。 如需詳細資訊,請參閱KeyBinding 項目。
若要當地語系化功能表文字,請使用
LocCanonicalName
項目。 如需詳細資訊,請參閱字串項目。
某些功能表和按鈕的類型包括特殊的行為。 下表描述一些特殊的功能表和按鈕類型。 對於其他類型,請參閱types
屬性中的描述功能表項目, Button 元素,和下拉式項目。
下拉式方塊
下拉式方塊是可以使用工具列的下拉式清單。 若要加入下拉式方塊的 ui,建立組合中的項目Commands
項目。 然後加入Combos
元素Combo
每個組合中加入的項目。 Combo
元素具有相同的屬性和子系為Button
項目,也有DefaultWidth
和idCommandList
屬性。 DefaultWidth
屬性設定為像素的寬度和idCommandList
屬性指向用來填入下拉式方塊的命令 ID。 如需詳細資訊,請參閱Combo
項目的文件。
MenuController
功能表控制器是具有該索引標籤旁邊的箭號按鈕。 按一下箭頭,即可開啟清單。 若要加入功能表控制器 ui,建立Menu
項目並設定其type
屬性設定為MenuController或MenuControllerLatched,取決於您要的行為。 若要填入功能表控制站,將它設為父代Group
項目。 功能表控制器將會顯示該群組的所有子系的下拉式清單上。