Aggiungere un menu alla barra dei menu di Visual Studio

Questa procedura dettagliata illustra come aggiungere un menu alla barra dei menu dell'ambiente di sviluppo integrato (IDE) di Visual Studio. La barra dei menu dell'IDE contiene categorie di menu, ad esempio File, Modifica, Visualizzazione, Finestra e Guida.

Prima di aggiungere un nuovo menu alla barra dei menu di Visual Studio, valutare se i comandi devono essere posizionati all'interno di un menu esistente. Per altre informazioni sul posizionamento dei comandi, vedere Menu e comandi per Visual Studio.

I menu vengono dichiarati nel file vsct del progetto. Per altre informazioni sui menu e sui file con estensione vsct , vedere Comandi, menu e barre degli strumenti.

Completando questa procedura dettagliata, è possibile creare un menu denominato Menu test che contiene un comando.

Nota

A partire da Visual Studio 2019, i menu di primo livello forniti dalle estensioni vengono inseriti nel menu Estensioni .

Creare un progetto VSIX con un modello di elemento di comando personalizzato

  1. Creare un progetto VSIX denominato TopLevelMenu. È possibile trovare il modello di progetto VSIX nella finestra di dialogo Nuovo progetto cercando "vsix". Per altre informazioni, vedere Creare un'estensione con un comando di menu.

  2. Quando si apre il progetto, aggiungere un modello di elemento di comando personalizzato denominato TestCommand. Nella Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Aggiungi>nuovo elemento. Nella finestra di dialogo Aggiungi nuovo elemento passare a Visual C# / Estendibilità e selezionare Comando. Nel campo Nome nella parte inferiore della finestra modificare il nome del file di comando in TestCommand.cs.

Creare un menu nella barra dei menu dell'IDE

  1. In Esplora soluzioni aprire TopLevelMenuPackage.vsct.

    Alla fine del file è presente un <Symbols> nodo che contiene diversi <GuidSymbol> nodi. Nel nodo denominato guidTopLevelMenuPackageCmdSetaggiungere un nuovo simbolo, come indicato di seguito:

    <IDSymbol name="TopLevelMenu" value="0x1021"/>
    
  2. Creare un nodo vuoto <Menus> nel <Commands> nodo, subito prima <Groups>di . <Menus> Nel nodo aggiungere un <Menu> nodo, come indicato di seguito:

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

    I guid valori e id del menu specificano il set di comandi e il menu specifico nel set di comandi.

    I guid valori e id dell'elemento padre posizionano il menu nella sezione della barra dei menu di Visual Studio che contiene i menu Strumenti e componenti aggiuntivi.

    L'elemento <ButtonText> specifica che il testo deve essere visualizzato nella voce di menu.

  3. <Groups> Nella sezione trovare e <Group> modificare l'elemento <Parent> in modo che punti al menu appena aggiunto:

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

    In questo modo il gruppo fa parte del nuovo menu.

  4. <Buttons> Nella sezione trovare il <Button> nodo. Quindi, nel <Strings> nodo modificare l'elemento <ButtonText> in Test Command.

    Si noti che il modello di pacchetto di Visual Studio ha generato un Button elemento con il relativo elemento padre impostato su MyMenuGroup. Di conseguenza, questo comando viene visualizzato nel menu.

Compilare e testare l'estensione

  1. Compilare il progetto e avviare il debug. Verrà visualizzata un'istanza dell'istanza sperimentale.

  2. Il menu Estensioni nell'istanza sperimentale deve contenere un menu Menu test.

  3. Scegliere Test Command (Comando test) dal menu Test.

    Verrà visualizzata una finestra di messaggio e verrà visualizzato il messaggio "TestCommand Inside TopLevelMenu.TestCommand.MenuItemCallback()".