Partilhar via


Como expor um suplemento no menu Ferramentas (Visual Basic)

Os suplementos do Visual Studio foram substituídos no Visual Studio 2013. Você deve atualizar seus suplementos para as extensões VSPackage. Para obter mais informações sobre atualização, consulte Perguntas frequentes: convertendo suplementos em extensões VSPackage.

Quando você cria um suplemento usando o Assistente de Suplemento e seleciona a opção de exibi-lo como um comando, o comando está no menu Ferramentas por padrão. No entanto, se você ignorar esta opção ao criar o suplemento, você poderá simplesmente executar o Assistente de Suplemento novamente, verificar a opção e, em seguida, copiar seu código existente para o novo suplemento.

Se não for possível fazer isso, o procedimento a seguir realizará a mesma coisa.

Dica

As caixas de diálogo e os comandos de menu que você vê podem diferir das descritas no Help dependendo de suas configurações ativas ou de edição.Esses procedimentos foram desenvolvidos com as Configurações Gerais de Desenvolvimento ativas.Para alterar as configurações, escolha Importar e ExportarConfigurações no menu de Ferramentas.Para obter mais informações, consulte Personalizando configurações de desenvolvimento no Visual Studio.

Para adicionar um comando de menu a um suplemento existente

  1. Na classe de Connect do suplemento, adicione Implements IDTCommandTarget.

    Isso fornece acesso à interface de comandos IDTCommandTarget, que é necessário para criar comandos.

  2. No procedimento OnConnection, 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") no Visual Studio. Determina se o suplemento foi carregado com um valor de ext_ConnectMode de ext_cm_UISetup. Isso significa que o suplemento foi iniciado pela primeira vez desde que foi instalado. Se isso for verdadeiro, um comando será criado para ele no menu de Ferramentas usando o método AddNamedCommand. Para obter mais informações, consulte Como adicionar e manipular comandos.

  3. Adicione os dois procedimentos a seguir à classe Connect.

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

    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ê implementa IDTCommandTarget, você deve adicionar esses dois procedimentos. Uma maneira rápida de fazer é selecionar IDTCommandTarget na caixa suspensa Nome de Classe, no canto superior esquerdo do editor. Selecione um procedimento por vez na caixa suspensa Nome do Método no canto superior direito. Isso cria os procedimentos vazios necessários com os parâmetros corretos aos quais é possível adicionar código.

    O procedimento Exec é chamado quando um usuário clica em seu comando de menu para inserir o código que deseja que seja executado naquele momento.

Consulte também

Tarefas

Como expor um suplemento no menu Ferramentas (Visual C#)

Como controlar suplementos usando o Gerenciador de Suplementos

Como criar um suplemento

Conceitos

Gráfico do modelo de objetos automation