注册互操作程序集命令处理程序

VSPackage 必须向 Visual Studio 注册,以便集成开发环境(IDE)正确路由其命令。

可以通过手动编辑或使用注册器 (.rgs) 文件来更新注册表。 有关更多信息,请参见 Creating Registrar Scripts

托管包框架(MPF)通过 ProvideMenuResourceAttribute 类提供此功能。

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