创作。Vsct 文件

本文档演示如何创作 .vsct 文件添加菜单项、工具栏和其他用户界面 (UI)元素到 Visual Studio 集成开发 (IDE)环境。 使用这些步骤,当添加 UI 元素到没有 .vsct 文件的 Visual Studio 包时 (VSPackage)。

对新项目,建议您使用 Visual Studio 包模板,因为它生成,具体取决于选择,已经有菜单命令、工具窗口或自定义编辑器的必需元素的一 .vsct 文件。 您可以修改此 .vsct 文件与 VSPackage 的要求。 有关如何修改 .vsct 文件的更多信息,请参见。 命令、菜单和工具栏的演练的示例。

生成文件

创作一 .vsct 文件在这些阶段中:创建文件和资源的结构,声明 UI 元素,放置 UI 元素在 IDE 中,并添加任何特殊的行为。

文件结构

.vsct 文件的基本结构是一个包含 命令 元素和一个 符号 元素的 CommandTable 根元素。

创建文件结构

  1. 添加一 .vsct 文件添加到项目并按照本 如何:创建一个。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 和名称以及命令 ID UI 元素的。

包括 Visual Studio 资源

使用 外部 元素访问定义 Visual Studio 命令和菜单在 IDE 需要放置 UI 元素的文件。 如果要使用在包外部定义的说明,请使用 UsedCommands 组件通知 Visual Studio。

包括 Visual Studio 资源

  1. 在 CommandTable 元素的顶部,请将每个外部文件的一个 Extern 元素进行引用和设置 href 属性设置为文件的名称。 可引用以下头文件访问 Visual Studio 资源:

    • Stdidcmd.h,定义了 Visual Studio 公开的所有命令的 ID。

    • Vsshlids.h,包含 Visual Studio 菜单上的命令 ID。

    • Msobtnid.h,定义了其他 VSCT 常量;这包括标准图标 ID。

  2. 如果打包名为定义的由 Visual Studio 或由其他包的说明,请在 Commands 元素之后添加一个 UsedCommands元素。 填充一个 UsedCommand 元素的此元素您调用不为包的每个命令的。 设置 UsedCommand 元素的 guid 和 id 属性设置为命令的 GUID 和 ID 值调用。 有关如何查找 Visual Studio 命令的 GUID 和 ID 的更多信息,请参见 Visual Studio 命令 GUID 和 ID。 若要从其他包的说明,请使用 GUID 和命令的 ID 为。 .vsct 文件定义为这些包。

声明 UI 元素

声明在 .vsct 文件的 Symbols 部分的所有新的 UI 元素。

声明 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 元素。

每 Menu、 Group和 Button 元素具有一 guid 属性和一 id 属性。 始终设置 guid 属性与表示设置的命令 GuidSymbol 元素的名称,并将 id 属性设置为表示菜单、组或命令在 Symbols 部分 IDSymbol 元素的名称。

定义 UI 元素

  1. 如果定义任何新菜单上子菜单、快捷菜单或工具栏,添加一个 Menus 元素。 Commands 元素。 然后,才能创建的每个菜单,添加一个 菜单 元素。 Menus 元素。

    设置 Menu元素的 guid 和 id 属性,然后设置 type 属性设置为所需的该菜单。 您也可以将 priority 属性在父组中建立菜单的相对位置。 有关更多信息,请参见如何:创建菜单上子菜单和快捷菜单如何:创建工具栏在 IDE

    备注

    priority 属性不适用于工具栏和上下文菜单。

  2. 必须由命令组承载在 Visual Studio IDE 中所有命令,其中是菜单和工具栏的直接子级。 如果您添加新菜单或工具栏到 IDE,这些必须包含新命令组。 还可以添加命令组添加到现有菜单和工具栏,以便您以可视方式进行分组命令。

    当添加新的命令组时,必须先创建 Groups 元素,然后向该集合中每个命令组的一个 元素。

    将每个 Group元素 guid 和 id 属性,然后设置 priority 属性建立组的相对位置在父菜单。 有关更多信息,请参见 如何:为按钮创建可重用的组

  3. 如果添加新命令到 IDE,添加一个 Buttons 元素。 Commands 元素。 然后,对于每个命令,添加一个 按钮 元素。 Buttons 元素。

    1. 将每个 Button元素 guid 和 id 属性,然后设置 type 属性设置为所需的该按钮。 您也可以将 priority 属性在父组中建立命令的相对位置。

      备注

      用于标准菜单命令使用工具栏中的 type="button" 和按钮。

    2. 在 Button元素中,添加包含一个 ButtonText 元素和一个 CommandName 元素的一个 字符串 元素。 ButtonText 元素为菜单项提供文本标签或工具栏按钮的工具提示。 CommandName 元素在命令提供命令的名称很好使用。

    3. 如果命令将具有一个图标,请创建一个 图标 元素在 Button元素,并将其 guid 和 id 属性设置为图标的 Bitmap 元素。

      备注

      工具栏按钮必须具有图标。

    有关更多信息,请参见 如何:在 Vspackage (c#) 创建和处理命令

  4. 如果任何一个命令需要图标,请将一个 位图 元素。 Commands 元素。 然后,对于每个图标,添加一个 位图 元素。 Bitmaps 元素。 这是指定位图资源的位置的位置。 有关更多信息,请参见 如何:将图标添加工具栏上的命令

可以依赖于权结构中正确放置大多数菜单、组和命令。 到大型命令设置,或者,在菜单、组或命令必须在多个位置时出现,建议您指定命令位置。

取决于权放置 UI 元素在 IDE

  • 对于典型的权,请创建一个 Parent 元素在每 Menu、 Group和在包中定义的 Command 元素。

    Parent 元素的目标是将包含菜单、组或命令的菜单或组。

    1. 设置 guid 属性用于定义设置命令 GuidSymbol 元素的名称。 如果目标元素不属于包的一部分,为该命令中使用 GUID 设置,对于对应的 .vsct 文件定义。

    2. 设置 id 属性与目标菜单或组的 id 属性。 有关由 Visual Studio 公开的列表菜单和组,请参见 Visual Studio 菜单 GUID 和 IDVisual Studio 工具栏 GUID 和 ID

如果有大量的 UI 元素放置在 IDE 中,或者,如果您有应在多个位置显示的元素,如以下步骤所示,请定义它们在 CommandPlacements 元素的位置,。

使用命令放置 UI 元素在 IDE

  1. 在 Commands 元素后,添加一个 CommandPlacements 元素。

  2. 在 CommandPlacements 元素中,添加每个菜单、组或命令的一个 CommandPlacement 元素可以将。

    每个 CommandPlacement 元素或 Parent元素在 IDE 中放置一个菜单、组或命令。 UI 元素只能有一个父级,但是,它可以有多个命令位置。 在多个位置希望在 UI 元素,请将每个位置的一个 CommandPlacement 元素。

  3. 就象在 Parent 元素,会将每个 CommandPlacement 元素 guid 和 id 属性设置为承载的菜单或组。 还可以设置 priority 属性来创建 UI 元素的相对位置。

您可以通过父和命令安排组合位置。 但是,对于此类情况,非常大的命令设置,建议您使用唯一的顺序位置。

添加专用的行为

可以使用 CommandFlag 元素修改菜单和命令行为,例如,更改其外观和可见性。 您可以影响命令时可见使用 VisibilityConstraints,使用 ,或添加键盘快捷键。 某些类型的菜单和命令已安装专用的行为。

添加专用的行为

  1. 若要使 UI 元素才能看到在某些 UI 上下文,例如,那么,当加载解决方案时,使用可见性约束。

    1. 在 Commands 元素后,添加一个 VisibilityConstraints 元素。

    2. 为了使约束每个 UI 的项目中,添加一个 VisibilityItem 元素。

    3. 对于每个 VisibilityItem 元素,将 guid 和 id 属性设置为菜单、组或命令,然后设置 context 属性设置为所需的 UI 上下文,对于 UIContextGuids80 类定义。 有关更多信息,请参见 VisibilityItem 元素

  2. 若要设置一个 UI 项的可见性或可用性在代码中,请使用以下一个或多个命令标志:

    • DefaultDisabled

    • DefaultInvisible

    • DynamicItemStart

    • DynamicVisibility

    • NoShowOnMenuController

    • NotInTBList

    有关更多信息,请参见 Command Flag 元素

  3. 若要更改元素的显示方式也可以动态地更改其外观,请使用以下一个或多个命令标志:

    • AlwaysCreate

    • CommandWellOnly

    • DefaultDocked

    • DontCache

    • DynamicItemStart

    • FixMenuController

    • IconAndText

    • Pict

    • StretchHorizontally

    • TextMenuUseButton

    • TextChanges

    • TextOnly

    有关更多信息,请参见 Command Flag 元素

  4. 若要更改元素如何响应,在收到命令,请使用以下一个或多个命令标志:

    • AllowParams

    • CaseSensitive

    • CommandWellOnly

    • FilterKeys

    • NoAutoComplete

    • NoButtonCustomize

    • NoKeyCustomize

    • NoToolbarClose

    • PostExec

    • RouteToDocs

    • TextIsAnchorCommand

    有关更多信息,请参见 Command Flag 元素

  5. 若要附加一个菜单依赖键盘快捷键向菜单或菜单中的项,请添加 " and " 符字符 (" ) 在菜单或菜单项的 ButtonText 元素。 按照 " and " 符的字符是有效的键盘快捷键,在父菜单打开时。

  6. 若要附加一个菜单独立键盘快捷键绑定到一个命令,请使用 。 有关更多信息,请参见 KeyBinding 元素

  7. 若要本地化菜单文本,请使用 LocCanonicalName 元素。 有关更多信息,请参见 Strings 元素

这些菜单和按钮类型包括专用的行为。 下表描述了这些专用的菜单和按钮类型。 有关其他类型,请参见。 Menu 元素Button 元素Combo 元素的 types 属性声明。

  • Combo box
    组合框在工具栏可以使用的下拉列表。 若要添加组合框到 UI,请创建一个 Combos 元素在 Commands 元素。 然后添加到 Combos 元素的每个组合框的一个 Combo 元素可以添加。 Combo 元素与 Button 组件并提供 DefaultWidth 和 idCommandList 属性的特性和子元素。 DefaultWidth 属性为像素宽度,并且, idCommandList 属性指向用于填充组合框的命令 ID。 有关更多信息,请参见 Combo 元素文档。

  • MenuController
    菜单控制器是一个具有箭头在其旁边的按钮。 单击箭头以打开列表。 若要添加菜单控制器到 UI,请创建一个 Menu 元素并将其 type 属性设置为 MenuController 或 MenuControllerLatched,根据所需的行为。 若要填充菜单控制器,请将其设置为 Group 元素的父级。 菜单控制器将显示该组的所有子级其的下拉列表。

请参见

概念

VSCT XML 架构参考

其他资源

使用命令、菜单和工具栏的常规任务

Visual Studio 命令 (表。Vsct) 文件