Porady: udostępnianie dodatku w menu Narzędzia (Visual Basic)

Dodatki Visual Studio zostały zaniechane w programie Visual Studio 2013.Dodatki należy uaktualniać do pakietu rozszerzenia VSPackage.Aby uzyskać więcej informacji na temat uaktualniania, zobacz Często zadawane pytania: konwertowanie dodatków na rozszerzenia pakietu VSPackage.

Gdy tworzysz dodatek za pomocą Kreatora dodatków i wybierasz opcję wyświetlania go jako polecenie, polecenie znajduje się w menu domyślnym Narzędzia.Jednakże, jeśli pominiesz tę opcję podczas tworzenia dodatku, można po prostu uruchomić ponownie Kreator dodatku, zaznaczyć tę opcję, a następnie skopiować istniejący kod do nowego dodatku.

Chociaż wykonanie tego nie jest możliwe, poniższa procedura daje ten sam efekt.

[!UWAGA]

Polecenia menu i okien dialogowych mogą różnić się od tych opisanych w Pomocy, w zależności od ustawień aktywnych lub wydania.Procedury te zostały opracowane z ogólnych ustawień projektowych active.Aby zmienić swoje ustawienia, wybierz Importuj i eksportujustawienia w menu Narzędzia.Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Aby dodać polecenie menu do istniejącego dodatku programu

  1. W klasie dodatków Connect dodaj Implements IDTCommandTarget.

    Daje to użytkownikowi dostęp do IDTCommandTarget interfejsu poleceń, co jest niezbędne do tworzenia poleceń.

  2. W procedurze OnConnection dodaj następujący wpis:

    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
    

    Ten kod wykonuje, gdy dodatek jest załadowany ("związane") w Visual Studio.Określa, czy ten dodatek został załadowany z wartością ext_ConnectMode z ext_cm_UISetup.Oznacza to, że dodatek został uruchomiony po raz pierwszy od zainstalowania.Jeśli to prawda, wówczas polecenie jest tworzone dla niego w menu Narzędzia za pomocą metody AddNamedCommand.Aby uzyskać więcej informacji, zobacz Porady: dodawanie i obsługa poleceń.

  3. Dodaj następujące dwie procedury do klasy Connect.

    Metoda QueryStatus jest wywoływana podczas wywoływania gdy polecenie jest dostępne.Metoda Exec jest wywoływana podczas wywoływania polecenia.

    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
    

    Każdorazowo, gdy implementujesz IDTCommandTarget, należy dodać te dwie procedury.Szybkim sposobem wykonania jest wybór IDTCommandTarget w polu rozwijanym Nazwa klasy w lewym górnym rogu edytora.Wybierz każdą procedurę z listy rozwijanej Nazwa metody w prawym górnym rogu.Spowoduje to utworzenie niezbędnych pustych procedur z poprawnych parametrów, do których można następnie dodać kod.

    Exec procedura jest wywoływana, gdy użytkownik kliknie polecenie menu, więc wstawi kod tam, gdzie chcesz go wykonać w tym momencie.

Zobacz też

Zadania

Porady: udostępnianie dodatku w menu Narzędzia (Visual C#)

Porady: kontrolowanie dodatków za pomocą menedżera dodatków

Porady: tworzenie dodatku

Koncepcje

Wykres modelu obiektów automatyzacji