将菜单添加到 Visual Studio 菜单栏

本演练演示如何向 Visual Studio 集成开发环境(IDE)的菜单栏添加菜单。 IDE 菜单栏包含“文件”、“编辑”、“视图”、“窗口”和“帮助”等菜单类别。

在向 Visual Studio 菜单栏添加新菜单之前,请考虑命令是否应放置在现有菜单中。 有关命令放置的详细信息,请参阅 Visual Studio 的菜单和命令。

菜单在 项目的 .vsct 文件中声明。 有关菜单和 .vsct 文件的详细信息,请参阅 命令、菜单和工具栏

通过完成本演练,可以创建一个名为“测试菜单”的菜单,其中包含一个命令。

注意

从 Visual Studio 2019 开始,扩展提供的顶级菜单放置在“ 扩展 ”菜单下。

创建具有自定义命令项模板的 VSIX 项目

  1. 创建名为 TopLevelMenu. 的 VSIX 项目。 可以通过搜索“vsix”在“新建项目”对话框中找到 VSIX 项目模板。 有关详细信息,请参阅 使用菜单命令创建扩展。

  2. 项目打开时,添加名为 TestCommand 的自定义命令项模板。 在“解决方案资源管理器”中,右键单击项目节点并选择“添加”>“新建项”。 在 “添加新项 ”对话框中,转到 Visual C# /Extensibility 并选择“ 命令”。 在 窗口底部的“名称 ”字段中,将命令文件名更改为 TestCommand.cs

在 IDE 菜单栏上创建菜单

  1. 解决方案资源管理器中,打开 TopLevelMenuPackage.vsct

    文件末尾有一个 <Symbols> 包含多个 <GuidSymbol> 节点的节点。 在名为guidTopLevelMenuPackageCmdSet>的节点中,添加新符号,如下所示:

    <IDSymbol name="TopLevelMenu" value="0x1021"/>
    
  2. <Commands>节点中创建一个空<Menus>节点,就在前面<Groups>。 在节点中添加<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 包模板已 Button 生成其父设置为 MyMenuGroup的元素。 因此,此命令将显示在菜单上。

生成并测试扩展

  1. 生成项目并启动调试。 应显示实验实例的实例。

  2. 实验实例中的“扩展”菜单应包含“测试菜单”菜单。

  3. “测试菜单” 菜单上,选择“ 测试命令”。

    消息框应显示并显示消息“TestCommand Inside TopLevelMenu.TestCommand.MenuItemCallback()”。