次の方法で共有


相互運用機能アセンブリ コマンド ハンドラーの登録

統合開発環境 (IDE) によってコマンドが適切にルーティングされるように、VSPackage を Visual Studio に登録する必要があります。

レジストリを更新するには、手動で編集するか、レジストラー (.rgs) ファイルを使用します。 詳細については、「 Creating Registrar Scripts」を参照してください。

Managed Package Framework (MPF) では、ProvideMenuResourceAttribute クラスを通じてこの機能を提供します。

VSPackage のコマンド ハンドラーの登録

ユーザー インターフェイス (UI) ベースのコマンドのハンドラーとして機能する VSPackage には、VSPackage GUID に基づいた名前が付けられたレジストリ エントリが必要です。 このレジストリ エントリは、VSPackage の UI リソース ファイルとそのファイル内のメニュー リソースの場所を指定します。 レジストリ エントリ自体は HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\<バージョン>\Menus の下にあります。ここでの <バージョン> は Visual Studio のバージョン (9.0 など) です。

Note

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<バージョン> のルート パスは、Visual Studio シェルが初期化されるときに代替ルートを使用してオーバーライドできます。 ルート パスの詳細については、「Windows インストーラーによる VSPackage のインストール」を参照してください。

CTMENU リソース レジストリ エントリ

このレジストリ エントリの構造は次のとおりです。

HKEY_LOCAL_MACHINE\Software\VisualStudio\<Version>\
  Menus\
    <GUID> = <Resource Information>

<GUID> は、{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX} の形式の VSPackage の GUID です。

<リソース情報> は、コンマで区切られた 3 つの要素で構成されます。 これらの要素の順序は次のとおりです。

<リソース DLL へのパス>、<メニュー リソース ID>、<メニュー バージョン>

次の表に <リソース情報> のフィールドを示します。

要素 説明
<リソース DLL へのパス> これは、メニュー リソースを含むリソース DLL への完全パスです。または、これは空白のままになっており、この場合は、VSPackage のリソース DLL が使用されることを示します (VSPackage 自体が登録されている Packages サブキーで指定されています)。

このフィールドを空白にしておくことが慣例です。
<メニュー リソース ID> これは、.vsct ファイルからコンパイルされたときに、VSPackage の UI 要素すべてを含む CTMENU リソースのリソース ID です。
<メニュー バージョン> これは、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