visual studio 插件开发 - VSCT文件

1 .vsct文件是什么?

XML命令表(.vsct) 文件文件描述 VSPackage 的命令项的布局和外观。

命令项包括按钮、组合框、菜单、工具栏和命令项组。

2 .vsct 文件介绍

.vsct 文件围绕命令、菜单和命令组进行组织。 .vsct 文件中的 XML 标记表示其中每个项,以及其他关联的项,例如命令按钮、命令放置和位图。

通过运行 Visual Studio 包模板创建新的 VSPackage 时,模板将生成一个 .vsct 文件,其中包含菜单命令、工具窗口或自定义编辑器所需的元素,具体取决于你的选择。 然后,可以修改此 .vsct 文件以满足特定 VSPackage 的要求。

2.1 .vsct 文件元素

CommandTable 元素:表示与 VSPackage 关联的所有命令、菜单组和菜单。

Extern 元素:引用要与 .vsct 文件合并的任何外部 .h 文件。

Include 元素:引用要与 .vsct 文件一起编译的任何其他标头 (.h) 文件。 .vsct 文件可以包含 .h 文件,其中包含定义 IDE 或其他 VSPackage 提供的命令、菜单组和菜单的常量。

Commands 元素:表示可以执行的所有单个命令。 每个命令包含以下四个子元素:

Menus 元素:表示 VSPackage 中的所有菜单和工具栏。 菜单是命令组的容器。

Groups 元素:表示 VSPackage 中的所有组。 组是单个命令的集合。

Buttons 元素:表示 VSPackage 中的所有命令按钮和菜单项。 按钮是可与命令关联的可视控件。

Bitmaps 元素:表示 VSPackage 中所有按钮的所有位图。 位图是命令按钮旁边或命令按钮上显示的图片,具体取决于上下文。

CommandPlacements 元素:指示应在 VSPackage 菜单中定位各个命令的其他位置。

VisibilityConstraints 元素:指定命令是随时显示还是仅在特定上下文中显示,例如显示特定对话框或窗口的时间。 仅当指定上下文处于活动状态时,才会显示具有此元素值的菜单和命令。 默认行为是随时显示命令。

KeyBindings 元素:指定命令的任何键绑定。 也就是说,必须按下一个或多个键组合来执行命令,例如 Ctrl+S。

UsedCommands 元素:通知 Visual Studio 环境,尽管指定的命令是由其他代码实现的,但当当前 VSPackage 处于活动状态时,它将提供命令实现。

Symbols 元素:包含包中所有命令的符号名称和 GUID ID。

3 vsct 的设计方式

遵循以下准则:

1.命令只能放置在组中,组只能放在菜单中,菜单只能放在组(这里的组已经在visual studio中定义好,我们只需要引用即可)中。 实际上,只有菜单显示在 IDE 中,组和命令不显示。

2.子菜单不能直接分配给菜单,但必须分配给一个组,该组又分配给菜单。

3.可以使用其定义指令的父字段将命令、子菜单和组分配给一个父组或菜单。

4.仅通过指令中的父字段组织命令表具有重大限制。 定义对象的指令只能采用一个父参数。

5.重用命令、组或子菜单需要使用新指令来创建具有其自己的 GUID:ID 对的对象的新实例。

6.每个 GUID:ID 对必须是唯一的。 例如,重用已放置在菜单、工具栏或上下文菜单上的命令由 IOleCommandTarget 接口处理。

7.还可以将命令和子菜单分配给多个组,并且可以使用 Commands 元素将组分配给多个菜单。

4 visual studio 定义好的命令、菜单和组

查找环境定义的命令
环境命令在一组四个 .vsct 文件中定义:
SharedCmdDef.vsct
SharedCmdPlace.vsct
ShellCmdDef.vsct
ShellCmdPlace.vsct

这些文件位于 <Visual Studio SDK 安装路径>\VisualStudioIntegration\Common\Inc\中。 这些文件提供菜单和组的定义和 GUID,可以在 VSPackage 的命令表配置 (.vsct) 文件中用作你自己的菜单、组和命令的容器。

安装的 vsct智能提示插件就是提示这些的。

4.1 Visual Studio 菜单的 GUID 和 ID

Visual Studio 菜单栏上的菜单和组使用 GUID guidSHLMainMenu。 菜单栏本身的 ID 为 IDM_VS_TOOL_MAINMENU.
Visual Studio IDE 提供的默认工具栏使用 GUID guidSHLMainMenu,除非使用 GUID:ID 语法指定的默认工具栏。

其中具体的菜单,组请参考:

Visual Studio 菜单的 GUID 和 ID

Visual Studio 工具栏的 GUID 和 ID

Visual Studio 命令的 GUID 和 ID

visual studio 插件开发 - 目录

posted @ 2024-06-06 11:23  x_amos  阅读(11)  评论(0编辑  收藏  举报