メニューを Visual Studio のメニュー バーに追加する
このチュートリアルでは、Visual Studio 統合開発環境 (IDE) のメニュー バーにメニューを追加する方法について説明します。 IDE のメニューバーには、[ファイル]、[編集]、[表示]、[ウィンドウ]、[ヘルプ] などのメニュー カテゴリがあります。
新しいメニューを Visual Studio のメニュー バーに追加する前に、コマンドを既存のメニュー内に配置するかどうかを検討してください。 コマンドの配置の詳細については、「Visual Studio のメニューとコマンド」を参照してください。
メニューは、プロジェクトの .vsct ファイルで宣言されます。 メニューおよび .vsct ファイルの詳細については、「コマンド、メニュー、およびツールバー」を参照してください。
このチュートリアルを終了すると、1 つのコマンドを含む "Test Menu" という名前のメニューを作成できます。
Note
Visual Studio 2019 以降では、拡張機能によって提供される最上位のメニューは [拡張機能] メニューに配置されます。
カスタム コマンド項目テンプレートを含む VSIX プロジェクトを作成する
TopLevelMenu
という名前の VSIX プロジェクトを作成します。 VSIX プロジェクト テンプレートは、[新しいプロジェクト] ダイアログで「vsix」と検索すると見つかります。 詳細については、「メニュー コマンドを使用した拡張機能の作成」を参照してください。プロジェクトが開いたら、Testcommand という名前のカスタム コマンド項目テンプレートを追加します。 ソリューション エクスプローラーで、プロジェクト ノードを右クリックして、[追加]>[新しい項目] の順に選択します。 [新しい項目の追加] ダイアログで、[Visual C#]、[拡張機能] の順に移動し、[コマンド] を選択します。 ウィンドウの下部にある [名前] フィールドで、コマンド ファイル名を TestCommand.cs に変更します。
IDE のメニュー バーのメニューを作成する
ソリューション エクスプローラーで、TopLevelMenuPackage.vsct を開きます。
ファイルの末尾には、複数の
<GuidSymbol>
ノードを含む<Symbols>
ノードがあります。guidTopLevelMenuPackageCmdSet
という名前のノードで、次のように新しいシンボルを追加します。<IDSymbol name="TopLevelMenu" value="0x1021"/>
<Commands>
ノードの<Groups>
の直前に、空の<Menus>
ノードを作成します。<Menus>
ノードで、次のように<Menu>
ノードを追加します。<Menus> <Menu guid="guidTopLevelMenuPackageCmdSet" id="TopLevelMenu" priority="0x700" type="Menu"> <Parent guid="guidSHLMainMenu" id="IDG_VS_MM_TOOLSADDINS" /> <Strings> <ButtonText>Test Menu</ButtonText> </Strings> </Menu> </Menus>
メニューの
guid
およびid
の値で、コマンド セットとコマンド セット内の特定のメニューを指定します。親の
guid
およびid
の値により、Visual Studio のメニュー バーの、[ツール] と [アドイン] メニューを含むセクションにメニューが配置されます。<ButtonText>
要素で、テキストをメニュー項目に表示することを指定します。<Groups>
セクションで<Group>
を探し、前の手順で追加したメニューをポイントするように<Parent>
要素を変更します。<Groups> <Group guid="guidTopLevelMenuPackageCmdSet" id="MyMenuGroup" priority="0x0600"> <Parent guid="guidTopLevelMenuPackageCmdSet" id="TopLevelMenu"/> </Group> </Groups>
これで、グループの部分が新しいメニューに追加されます。
<Buttons>
セクションで、<Button>
ノードを探します。 次に、<Strings>
ノードで、<ButtonText>
要素をTest Command
に変更します。Visual Studio パッケージ テンプレートによって、親が
MyMenuGroup
に設定されているButton
要素が生成されたことに注意してください。 その結果、このコマンドがメニューに表示されます。
拡張機能をビルドしてテストする
プロジェクトをビルドし、デバッグを開始します。 実験用インスタンスのインスタンスが表示されます。
実験用インスタンスの [拡張機能] メニューには、[Test Menu] メニューが含まれています。
[Test Menu] メニューで、[Test Command] を選択します。
メッセージ ボックスが表示され、"TestCommand Inside TopLevelMenu.TestCommand.MenuItemCallback()" というメッセージが表示されます。