VSPackage 必须向 Visual Studio 注册,以便集成开发环境(IDE)正确路由其命令。
可以通过手动编辑或使用注册器 (.rgs) 文件来更新注册表。 有关更多信息,请参见 Creating Registrar Scripts。
托管包框架(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> 是 GUID
采用 {XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX} 格式的 VSPackage。
<资源信息> 由逗号分隔的三个元素组成。 这些元素按顺序排列:
<资源 DLL 的路径、<菜单资源 ID>、<菜单版本>>
下表描述了资源信息的>字段<。
元素 | 说明 |
---|---|
<资源 DLL 的路径> | 这是包含菜单资源的资源 DLL 的完整路径,或者此路径留空,指示将使用 VSPackage 的资源 DLL(如注册 VSPackage 本身的 Packages 子项中指定的)。 通常将此字段留空。 |
<菜单资源 ID> | 这是资源的资源 ID CTMENU ,其中包含从 .vsct 文件编译的 VSPackage 的所有 UI 元素。 |
<菜单版本> | 这是用作资源版本的 CTMENU 数字。 Visual Studio 使用此值来确定它是否需要将所有资源的缓存CTMENU 重新合并资源的内容CTMENU 。 通过执行 devenv 安装命令触发重新合并。此值最初应设置为 1,并在资源每次更改 CTMENU 之后以及重新合并之前递增。 |
示例
下面是几个资源条目的示例:
HKEY_LOCAL_MACHINE\Software\VisualStudio\9.0Exp\
Menus\
{019971D6-4685-11D2-B48A-0000F87572EB} = ,1, 10
{1b027a40-8f43-11d0-8d11-00a0c91bc942} = , 10211, 3