メニューを Visual Studio のメニュー バーに追加する

このチュートリアルでは、Visual Studio 統合開発環境 (IDE) のメニュー バーにメニューを追加する方法について説明します。 IDE のメニューバーには、[ファイル][編集][表示][ウィンドウ][ヘルプ] などのメニュー カテゴリがあります。

新しいメニューを Visual Studio のメニュー バーに追加する前に、コマンドを既存のメニュー内に配置するかどうかを検討してください。 コマンドの配置の詳細については、「Visual Studio のメニューとコマンド」を参照してください。

メニューは、プロジェクトの .vsct ファイルで宣言されます。 メニューおよび .vsct ファイルの詳細については、「コマンド、メニュー、およびツールバー」を参照してください。

このチュートリアルを終了すると、1 つのコマンドを含む "Test Menu" という名前のメニューを作成できます。

Note

Visual Studio 2019 以降では、拡張機能によって提供される最上位のメニューは [拡張機能] メニューに配置されます。

カスタム コマンド項目テンプレートを含む VSIX プロジェクトを作成する

  1. TopLevelMenu という名前の VSIX プロジェクトを作成します。 VSIX プロジェクト テンプレートは、[新しいプロジェクト] ダイアログで「vsix」と検索すると見つかります。 詳細については、「メニュー コマンドを使用した拡張機能の作成」を参照してください。

  2. プロジェクトが開いたら、Testcommand という名前のカスタム コマンド項目テンプレートを追加します。 ソリューション エクスプローラーで、プロジェクト ノードを右クリックして、[追加]>[新しい項目] の順に選択します。 [新しい項目の追加] ダイアログで、[Visual C#]、[拡張機能] の順に移動し、[コマンド] を選択します。 ウィンドウの下部にある [名前] フィールドで、コマンド ファイル名を TestCommand.cs に変更します。

IDE のメニュー バーのメニューを作成する

  1. ソリューション エクスプローラーで、TopLevelMenuPackage.vsct を開きます。

    ファイルの末尾には、複数の <GuidSymbol> ノードを含む <Symbols> ノードがあります。 guidTopLevelMenuPackageCmdSet という名前のノードで、次のように新しいシンボルを追加します。

    <IDSymbol name="TopLevelMenu" value="0x1021"/>
    
  2. <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> 要素で、テキストをメニュー項目に表示することを指定します。

  3. <Groups> セクションで <Group> を探し、前の手順で追加したメニューをポイントするように <Parent> 要素を変更します。

    <Groups>
        <Group guid="guidTopLevelMenuPackageCmdSet" id="MyMenuGroup" priority="0x0600">
            <Parent guid="guidTopLevelMenuPackageCmdSet" id="TopLevelMenu"/>
        </Group>
    </Groups>
    

    これで、グループの部分が新しいメニューに追加されます。

  4. <Buttons> セクションで、<Button> ノードを探します。 次に、<Strings> ノードで、<ButtonText> 要素を Test Command に変更します。

    Visual Studio パッケージ テンプレートによって、親が MyMenuGroup に設定されている Button 要素が生成されたことに注意してください。 その結果、このコマンドがメニューに表示されます。

拡張機能をビルドしてテストする

  1. プロジェクトをビルドし、デバッグを開始します。 実験用インスタンスのインスタンスが表示されます。

  2. 実験用インスタンスの [拡張機能] メニューには、[Test Menu] メニューが含まれています。

  3. [Test Menu] メニューで、[Test Command] を選択します。

    メッセージ ボックスが表示され、"TestCommand Inside TopLevelMenu.TestCommand.MenuItemCallback()" というメッセージが表示されます。