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

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

可以通过手动编辑或使用注册器 (.rgs) 文件来更新注册表。 有关详细信息,请参阅 “创建注册器脚本”。

托管包框架(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> 是 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