VSPackage 必须向 Visual Studio 注册,以便集成开发环境(IDE)正确路由其命令。
可以通过手动编辑或使用注册器 (.rgs) 文件来更新注册表。 有关详细信息,请参阅 “创建注册器脚本”。
托管包框架(MPF)通过 ProvideMenuResourceAttribute 类提供此功能。
- 命令表格式引用 资源位于非托管附属 UI dll 中。
VSPackage 的命令处理程序注册
充当基于用户界面(UI)的命令的处理程序的 VSPackage 需要一个以 VSPackage GUID命名的注册表项。 此注册表项指定 VSPackage 的 UI 资源文件和该文件中的菜单资源的位置。 注册表项本身位于 HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\<Version>\Menus 下,其中 <版本> 是 Visual Studio 的版本,例如 9.0。
注释
当初始化 Visual Studio shell 时,可以使用备用根路径覆盖 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<Version> 的根路径。 有关根路径的详细信息,请参阅 使用 Windows Installer 安装 VSPackages。
CTMENU 资源注册表项
注册表项的结构为:
HKEY_LOCAL_MACHINE\Software\VisualStudio\<Version>\
Menus\
<GUID> = <Resource Information>
<
GUID> 是 VSPackage 的 GUID,采用格式 {XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX}。
<资源信息> 由逗号分隔的三个元素组成。 这些元素按顺序排列:
< 资源 DLL 的路径>、<菜单资源 ID>、<菜单版本>
下表描述了<字段>。
| 元素 | Description |
|---|---|
| < 资源 DLL 的路径> | 这是包含菜单资源的资源 DLL 的完整路径,或者此路径留空,指示将使用 VSPackage 的资源 DLL(如注册 VSPackage 本身的 Packages 子项中指定的)。 通常将此字段留空。 |
| < 菜单资源 ID> | 这是包含从 .vsct 文件编译的 VSPackage 的所有 UI 元素的 CTMENU 资源的资源 ID。 |
| < 菜单版本> | 这是用作资源版本的 CTMENU 编号。 Visual Studio 使用此值来确定是否需要将CTMENU资源的内容与其所有CTMENU资源的缓存重新合并。 通过执行 devenv 设置命令触发重新合并。此值最初应设置为 1,并在每次更改 CTMENU资源后以及重新合并发生前递增。 |
Example
下面是几个资源条目的示例:
HKEY_LOCAL_MACHINE\Software\VisualStudio\9.0Exp\
Menus\
{019971D6-4685-11D2-B48A-0000F87572EB} = ,1, 10
{1b027a40-8f43-11d0-8d11-00a0c91bc942} = , 10211, 3