Partilhar via


How to: Expor uma Adicionar-no Menu Ferramentas (Visual Basic)

Quando você cria um add-in usando o O Assistente de suplemento e selecione a opção para exibi-lo como um comando, o comando está no Ferramentas menu por padrão. Se você ignorar essa opção quando você cria o add-in, no entanto, você pode simplesmente executar o O Assistente de suplemento novamente, marque essa opção e então copie seu código existente para o novo suplemento.

Se isso não for possível, porém, o procedimento a seguir realiza a mesma coisa.

ObservaçãoObservação

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição. Esses procedimentos foram desenvolvidos com o General Development Settings ativo. Para alterar as configurações, escolha importação e Exportar configurações sobre o Ferramentas menu. Para obter mais informações, consulte Trabalhando com configurações.

Para adicionar um comando de menu para um add-in existente

  1. No Connect classe do add-in, add Implements IDTCommandTarget.

    Isso dá acesso para o IDTCommandTarget interface de comandos que é necessário para a criação de comandos.

  2. No OnConnection procedimento, adicione o seguinte:

    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
    

    Esse código é executado quando o suplemento é carregado ("conectado") em Visual Studio. Ele determina se o suplemento foi carregado com um ext_ConnectMode valor de ext_cm_UISetup. Isso significa que o suplemento foi iniciado pela primeira vez desde que está sendo instalado. Se isso é verdadeiro, então um comando é criado para ele no Ferramentas menu usando o AddNamedCommand método. Para obter mais informações, consulte How to: Adicionar e comandos da alça.

  3. Adicionar os dois procedimentos a seguir para o Connect classe.

    O QueryStatus método é chamado quando a disponibilidade do comando é atualizada. O Exec método é chamado quando o comando é chamado.

    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
    

    Cada vez que você implemente IDTCommandTarget, você deve adicionar esses dois procedimentos. Uma maneira rápida de fazer isso é selecionar IDTCommandTarget na Nome da classe na caixa suspensa no canto superior esquerdo do editor. Selecione cada procedimento por sua vez o Nome do método a caixa suspensa no canto superior direito. Isso cria os procedimentos vazios necessários com os parâmetros corretos para o qual você pode adicionar código.

    O Exec procedimento é chamado quando um usuário clica em seu comando de menu, então, insira o código que você deseja executar no tempo.

Consulte também

Tarefas

How to: Expor uma Adicionar-no Menu Ferramentas (Visual C#)

How to: Adicionar-Ins usando o Adicionar-no Gerenciador de controle

How to: Criar um Adicionar-

Conceitos

Automation Object Model Chart