相互運用機能アセンブリ コマンド ハンドラーの登録
統合開発環境 (IDE) によってコマンドが適切にルーティングされるように、VSPackage を Visual Studio に登録する必要があります。
レジストリを更新するには、手動で編集するか、レジストラー (.rgs) ファイルを使用します。 詳細については、「 Creating Registrar Scripts」を参照してください。
Managed Package Framework (MPF) では、ProvideMenuResourceAttribute クラスを通じてこの機能を提供します。
- [コマンド テーブル形式のリファレンス] リソースは、アンマネージド サテライト UI dll にあります。
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