Agregar un menú a la barra de menús de Visual Studio

En este tutorial se muestra cómo agregar un menú a la barra de menús del entorno de desarrollo integrado (IDE) de Visual Studio. La barra de menús del IDE contiene categorías de menús como Archivo, Edición, Vista, Ventana y Ayuda.

Antes de agregar un nuevo menú a la barra de menús de Visual Studio, considere si los comandos deben colocarse dentro de un menú existente. Para obtener más información sobre la selección de ubicación de comandos, vea Menús y comandos para Visual Studio.

Los menús se declaran en el archivo .vsct del proyecto. Para obtener más información sobre los menús y los archivos .vsct , vea Comandos, menús y barras de herramientas.

Al completar este tutorial, puede crear un menú denominado Menú de prueba que contenga un comando.

Nota:

A partir de Visual Studio 2019, los menús de nivel superior aportados por las extensiones se colocan en el menú Extensiones .

Crear un proyecto VSIX que tenga una plantilla de elemento de comando personalizada

  1. Cree un proyecto VSIX denominado TopLevelMenu. Puede encontrar la plantilla de proyecto VSIX en el cuadro de diálogo Nuevo proyecto buscando "vsix". Para obtener más información, vea Crear una extensión con un comando de menú.

  2. Cuando se abra el proyecto, agregue una plantilla de elemento de comando personalizada denominada TestCommand. En el Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto y seleccione Agregar>Nuevo elemento. En el cuadro de diálogo Agregar nuevo elemento , vaya a Visual C# / Extensibilidad y seleccione Comando. En el campo Nombre de la parte inferior de la ventana, cambie el nombre del archivo de comando a TestCommand.cs.

Crear un menú en la barra de menús del IDE

  1. En Explorador de soluciones, abra TopLevelMenuPackage.vsct.

    Al final del archivo, hay un <Symbols> nodo que contiene varios <GuidSymbol> nodos. En el nodo denominado guidTopLevelMenuPackageCmdSet, agregue un nuevo símbolo, como se indica a continuación:

    <IDSymbol name="TopLevelMenu" value="0x1021"/>
    
  2. Cree un nodo vacío <Menus> en el <Commands> nodo, justo antes <Groups>de . En el nodo, agregue un <Menu> nodo de la <Menus> siguiente manera:

    <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>
    

    Los guid valores y id del menú especifican el conjunto de comandos y el menú específico del conjunto de comandos.

    Los guid valores y id del elemento primario colocan el menú en la sección de la barra de menús de Visual Studio que contiene los menús Herramientas y complementos.

    El <ButtonText> elemento especifica que el texto debe aparecer en el elemento de menú.

  3. En la <Groups> sección , busque <Group> y cambie el <Parent> elemento para que apunte al menú que acabamos de agregar:

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

    Esto hace que la parte de grupo del nuevo menú.

  4. En la <Buttons> sección , busque el <Button> nodo . A continuación, en el <Strings> nodo, cambie el <ButtonText> elemento a Test Command.

    Observe que la plantilla Paquete de Visual Studio ha generado un Button elemento que tiene su elemento primario establecido en MyMenuGroup. Como resultado, este comando aparece en el menú.

Compilación y prueba de la extensión

  1. Compile la solución y comience la depuración. Debería aparecer una instancia de la instancia experimental.

  2. El menú Extensiones de la instancia experimental debe contener un menú De prueba .

  3. En el menú Probar , seleccione Comando de prueba.

    Debería aparecer un cuadro de mensaje y mostrar el mensaje "TestCommand Inside TopLevelMenu.TestCommand.MenuItemCallback()".