Hinzufügen eines Menüs zur Visual Studio-Menüleiste

In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie der Menüleiste der integrierten Entwicklungsumgebung (IDE) von Visual Studio ein Menü hinzufügen. Die IDE-Menüleiste enthält Menükategorien wie "Datei", "Bearbeiten", "Ansicht", "Fenster" und "Hilfe".

Bevor Sie der Visual Studio-Menüleiste ein neues Menü hinzufügen, überlegen Sie, ob Ihre Befehle in einem vorhandenen Menü platziert werden sollen. Weitere Informationen zur Platzierung von Befehlen finden Sie unter Menüs und Befehle für Visual Studio.

Menüs werden in der VSCT-Datei des Projekts deklariert. Weitere Informationen zu Menüs und VSCT-Dateien finden Sie unter Befehle, Menüs und Symbolleisten.

Durch Ausführen dieser exemplarischen Vorgehensweise können Sie ein Menü mit dem Namen "Testmenü " erstellen, das einen Befehl enthält.

Hinweis

Ab Visual Studio 2019 werden Menüs der obersten Ebene, die von Erweiterungen beigetragen haben, unter dem Menü "Erweiterungen " platziert.

Erstellen eines VSIX-Projekts mit einer benutzerdefinierten Befehlselementvorlage

  1. Erstellen Sie ein VSIX-Projekt mit dem Namen TopLevelMenu. Sie finden die VSIX-Projektvorlage im Dialogfeld "Neues Projekt ", indem Sie nach "vsix" suchen. Weitere Informationen finden Sie unter Erstellen einer Erweiterung mit einem Menübefehl.

  2. Wenn das Projekt geöffnet wird, fügen Sie eine benutzerdefinierte Befehlselementvorlage mit dem Namen TestCommand hinzu. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Hinzufügen>Neues Element aus. Wechseln Sie im Dialogfeld "Neues Element hinzufügen" zu Visual C# / Erweiterbarkeit, und wählen Sie "Befehl" aus. Ändern Sie im Feld "Name " unten im Fenster den Befehlsdateinamen in "TestCommand.cs".

Erstellen eines Menüs auf der IDE-Menüleiste

  1. Öffnen Sie in Projektmappen-Explorer TopLevelMenuPackage.vsct.

    Am Ende der Datei befindet sich ein <Symbols> Knoten, der mehrere <GuidSymbol> Knoten enthält. Fügen Sie im Knoten namens guidTopLevelMenuPackageCmdSetein neues Symbol wie folgt hinzu:

    <IDSymbol name="TopLevelMenu" value="0x1021"/>
    
  2. Erstellen Sie einen leeren <Menus> Knoten im <Commands> Knoten direkt vor <Groups>. Fügen Sie im <Menus> Knoten einen <Menu> Knoten wie folgt hinzu:

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

    Die guid Werte id und Werte des Menüs geben den Befehlssatz und das spezifische Menü im Befehlssatz an.

    Die guid Werte und id Werte der übergeordneten Position des Menüs im Abschnitt der Visual Studio-Menüleiste, die die Menüs "Extras" und "Add-Ins" enthält.

    Das <ButtonText> Element gibt an, dass der Text im Menüelement angezeigt werden soll.

  3. Suchen Sie im <Groups> Abschnitt das <Group> Element, und ändern Sie es <Parent> so, dass es auf das Gerade hinzugefügte Menü zeigt:

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

    Dadurch wird der Gruppenteil des neuen Menüs.

  4. Suchen Sie im <Buttons> Abschnitt den <Button> Knoten. Ändern Sie dann im <Strings> Knoten das <ButtonText> Element in Test Command.

    Beachten Sie, dass die Visual Studio-Paketvorlage ein Button Element generiert hat, auf das das übergeordnete Element festgelegt MyMenuGroupist. Daher wird dieser Befehl im Menü angezeigt.

Erstellen und Testen der Erweiterung

  1. Erstellen Sie das Projekt, und starten Sie das Debugging. Eine Instanz der experimentellen Instanz sollte angezeigt werden.

  2. Das Menü "Erweiterungen" in der experimentellen Instanz sollte ein Menü "Testmenü " enthalten.

  3. Wählen Sie im Menü "Test" die Option "Testbefehl" aus.

    Ein Meldungsfeld sollte angezeigt und die Meldung "TestCommand Inside TopLevelMenu.TestCommand.MenuItemCallback()" angezeigt werden.