Freigeben über


Gewusst wie: Verfügbarmachen eines Add-Ins im Menü "Extras" (Visual Basic)

Add-Ins für Visual Studio sind in Visual Studio 2013 veraltet. Sie müssen für Ihre Add-Ins ein Upgrade auf VSPackage-Erweiterungen durchführen. Weitere Informationen über das Durchführen eines Upgrades finden Sie unter FAQ: Konvertieren von Add-Ins in VSPackage-Erweiterungen.

Wenn Sie mithilfe des Add-In-Assistenten ein Add-In erstellen und die Option zum Anzeigen des Add-Ins als Befehl auswählen, befindet sich der Befehl standardmäßig im Menü Extras. Wenn Sie bei der Add-In-Erstellung diese Option überspringen, können Sie den Add-In-Assistenten einfach erneut ausführen, die Option auswählen und den vorhandenen Code in das neue Add-In kopieren.

Sollte dies jedoch nicht möglich sein, erreichen Sie mithilfe der folgenden Prozedur dasselbe Ziel.

Hinweis

Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen.Bei der Entwicklung dieser Verfahren war die Option Allgemeine Entwicklungseinstellungen aktiviert.Wählen Sie im Menü Extras die Option Einstellungen importieren und exportieren aus, um die Einstellungen zu ändern.Weitere Informationen finden Sie unter Anpassen der Entwicklungseinstellungen in Visual Studio.

So fügen Sie einem vorhandenen Add-In einen Menübefehl hinzu

  1. Fügen Sie Implements IDTCommandTarget in der Connect-Klasse des Add-Ins hinzu.

    Auf diese Weise erhalten Sie den zum Erstellen von Befehlen erforderlichen Zugriff auf die IDTCommandTarget-Befehlsschnittstelle.

  2. Fügen Sie der OnConnection-Prozedur den folgenden Code hinzu:

    Imports System
    Imports Microsoft.VisualStudio.CommandBars
    Imports Extensibility
    Imports EnvDTE
    Imports EnvDTE80
    
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    If connectMode = ext_ConnectMode.ext_cm_Startup Then
        Dim commands As Commands2 = CType(_applicationObject.Commands, _
          Commands2)
        Dim toolsMenuName As String
        Try
            Dim resourceManager As System.Resources.ResourceManager = _
            New System.Resources.ResourceManager _
             ("MyAddin1.CommandBar", System.Reflection.Assembly. _
             GetExecutingAssembly())
    
            Dim cultureInfo As System.Globalization.CultureInfo = New _
             System.Globalization.CultureInfo(_applicationObject. _
             LocaleID)
            toolsMenuName = resourceManager.GetString(String.Concat _
              (cultureInfo.TwoLetterISOLanguageName, "Tools"))
    
        Catch e As Exception
            toolsMenuName = "Tools"
        End Try
    
        Dim commandBars As CommandBars = _
          CType(_applicationObject.CommandBars, CommandBars)
        Dim menuBarCommandBar As CommandBar = _
          commandBars.Item("MenuBar")
    
        Dim toolsControl As CommandBarControl = _
          menuBarCommandBar.Controls.Item(toolsMenuName)
        Dim toolsPopup As CommandBarPopup = CType(toolsControl, _
          CommandBarPopup)
    
        Try
            Dim command As Command = _
              commands.AddNamedCommand2(_addInInstance, "MyAddin1", _
              "MyAddin1", "Executes the command for MyAddin1", True, _
              59, Nothing, CType(vsCommandStatus. _
              vsCommandStatusSupported, Integer) + _
              CType(vsCommandStatus.vsCommandStatusEnabled,  _
              Integer), vsCommandStyle.vsCommandStylePictAndText, _
              vsCommandControlType.vsCommandControlTypeButton)
    
           command.AddControl(toolsPopup.CommandBar, 1)
        Catch argumentException As System.ArgumentException
        End Try
    End If
    

    Dieser Code wird ausgeführt, wenn das Add-In in Visual Studio geladen, d. h. "verbunden" wird. Er ermittelt, ob das Add-In mit einem ext_ConnectMode-Wert von ext_cm_UISetup geladen wurde. Das bedeutet, das Add-In wurde erstmalig nach seiner Installation gestartet. Wenn dies der Fall ist, wird mithilfe der AddNamedCommand-Methode im Menü Extras ein Befehl für das Add-In erstellt. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen und Ändern von Befehlen.

  3. Fügen Sie der Connect-Klasse die beiden folgenden Prozeduren hinzu.

    Die QueryStatus-Methode wird aufgerufen, wenn die Verfügbarkeit des Befehls aktualisiert wird. Die Exec-Methode wird aufgerufen, wenn der Befehl aufgerufen wird.

    Public Sub QueryStatus(ByVal commandName As String,  _
      ByVal neededText As vsCommandStatusTextWanted, ByRef status As _
      vsCommandStatus, ByRef commandText As Object) Implements _
      IDTCommandTarget.QueryStatus
        If neededText = vsCommandStatusTextWanted. _
          vsCommandStatusTextWantedNone Then
            If commandName = "MyAddin1.Connect.MyAddin1" Then
                status = CType(vsCommandStatus.vsCommandStatusEnabled _
                  + vsCommandStatus.vsCommandStatusSupported, _
                  vsCommandStatus)
            Else
                status = vsCommandStatus.vsCommandStatusUnsupported
            End If
        End If
    End Sub
    
    Public Sub Exec(ByVal commandName As String, ByVal executeOption _
      As vsCommandExecOption, ByRef varIn As Object, ByRef varOut As _
      Object, ByRef handled As Boolean) Implements IDTCommandTarget.Exec
        handled = False
        If executeOption = vsCommandExecOption. _
          vsCommandExecOptionDoDefault Then
            If commandName = "MyAddin1.Connect.MyAddin1" Then
                handled = True
                Exit Sub
            End If
        End If
    End Sub
    

    Bei jeder Implementierung von IDTCommandTarget müssen Sie diese beiden Prozeduren hinzufügen. Um die Prozeduren schnell hinzuzufügen, wählen Sie im Editor im Dropdownfeld Klassenname in der linken oberen Ecke IDTCommandTarget aus. Wählen Sie dann jede Prozedur im Dropdownfeld Methodenname in der rechten oberen Ecke aus. Auf diese Weise werden die erforderlichen leeren Prozeduren mit den korrekten Parametern erstellt, denen Sie dann Code hinzufügen können.

    Die Exec-Prozedur wird aufgerufen, wenn ein Benutzer auf den Menübefehl klickt, d. h., Sie müssen an dieser Stelle den Code einfügen, der dann ausgeführt werden soll.

Siehe auch

Aufgaben

Gewusst wie: Verfügbarmachen eines Add-Ins im Menü "Extras" (Visual C#)

Gewusst wie: Steuern von Add-Ins mit dem Add-In-Manager

Gewusst wie: Erstellen von Add-Ins

Konzepte

Diagramm "Automationsobjektmodell"