Compartir a través de


Cómo: Exponer un complemento en un menú contextual

Los complementos de Visual Studio están desusados en Visual Studio 2013. Debe actualizar los complementos a las extensiones de VSPackage. Para obtener más información sobre la actualización, vea Preguntas más frecuentes: Convertir complementos en extensiones de VSPackage.

Aunque el modelo de automatización Visual Studio facilita la colocación de comandos de complemento en menús de nivel superior, tales como el menú Herramientas, también es posible agregar comandos a menús contextuales y submenús.

Para ello, sin embargo, debe utilizar el modelo de objetos de Barra de comandos de Microsoft Visual Studio para definir explícitamente el menú contextual y el submenú de destino. A continuación, debe llamar al método AddControl de Visual Studio.

Los menús contextuales son similares a otros menús de Visual Studio. Para tener acceso a ellos, apunte a la flecha abajo de un menú desplegable o haga clic con el botón secundario del mouse en el entorno de desarrollo integrado (IDE).

Para agregar un comando a un menú contextual (o a cualquier menú o barra de herramientas), debe conocer su nombre de comando. Puede encontrarlo buscando en el nodo Teclado del cuadro de diálogo Opciones del menú Herramientas.

El procedimiento siguiente muestra cómo agregar un comando de complemento al menú contextual Lista de tareas.

Nota

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos.Estos procedimientos se han desarrollado con la Configuración de desarrollo general activa.Para cambiar la configuración, elija la opción Importar y Exportarconfiguraciones en el menú Herramientas.Para obtener más información, vea Personalizar la configuración de desarrollo en Visual Studio.

Para agregar un comando de complemento a un menú contextual

  1. En el menú Archivo, elija Nuevo y haga clic en Proyecto.

  2. En el cuadro de diálogo Nuevo proyecto, expanda Otros tipos de proyectos, haga clic en Extensibilidad y, a continuación, haga clic en Complemento de Visual Studio en el panel Plantillas.

    Denomine el complemento ContextCmd y haga clic en Aceptar para iniciar el Asistente para complementos de Visual Studio.

  3. Seleccione la opción para crear una interfaz de usuario para el complemento; para ello, active la casilla ¿Desea crear la interfaz de usuario de barra de comandos para el complemento?

    Esto agrega código de interfaz de usuario al método OnConnection. También agrega el método Exec, que controla el evento cuando se hace clic en el comando del complemento, y el método QueryStatus, que proporciona información sobre el estado del complemento.

  4. Reemplace el código por el siguiente:

    Imports System
    Imports Microsoft.VisualStudio.CommandBars
    Imports Extensibility
    Imports EnvDTE
    Imports EnvDTE80
    
    Public Class Connect
    
        Implements IDTExtensibility2
        Implements IDTCommandTarget
    
        Dim _applicationObject As DTE2
        Dim _addInInstance As AddIn
    
        Dim cmdBarCtl As CommandBarControl
    
        Public Sub New()
        End Sub
    
        Public Sub OnConnection(ByVal application As Object, ByVal _
          connectMode As ext_ConnectMode, ByVal addInInst As Object, _
          ByRef custom As Array) Implements _
          IDTExtensibility2.OnConnection
            Dim cmd As Command
            Dim cmdBar As CommandBar
    
            _applicationObject = CType(application, DTE2)
            _addInInstance = CType(addInInst, AddIn)
    
            Try
                If CType(ext_ConnectMode.ext_cm_AfterStartup Or _
                  ext_ConnectMode.ext_cm_Startup, Boolean) Then
                    ' If the command does not exist, add it.
                    If cmd Is Nothing Then
                        cmd = _applicationObject.Commands. _
                          AddNamedCommand(_addInInstance, _
                          "newCmd", "newCmd", "Runs the add-in.", _
                          True, 59, Nothing, _
                          vsCommandStatus.vsCommandStatusSupported _
                          Or vsCommandStatus.vsCommandStatusEnabled)
                    End If
    
                    ' Reference the Task List shortcut menu.
                    cmdBar = CType(_applicationObject. _
                      CommandBars.Item("Task List"), _
                      Microsoft.VisualStudio.CommandBars.CommandBar)
    
                    ' Add a command to the Task List's shortcut menu.
                    cmdBarCtl = CType(cmd.AddControl(cmdBar, _
                      cmdBar.Controls.Count + 1), _
                      Microsoft.VisualStudio.CommandBars. _
                      CommandBarControl)
                    cmdBarCtl.Caption = "A New Command"
                End If
            Catch e As System.Exception
                System.Windows.Forms.MessageBox.Show(e.ToString)
            End Try
        End Sub
    
        Public Sub OnDisconnection(ByVal disconnectMode As _
          ext_DisconnectMode, ByRef custom As Array) Implements _
          IDTExtensibility2.OnDisconnection
            Try
                ' Delete the command bar control from the 
                   ' shortcut menu.
                If Not (cmdBarCtl Is Nothing) Then
                    cmdBarCtl.Delete()
                End If
            Catch e As System.Exception
                System.Windows.Forms.MessageBox.Show(e.ToString)
            End Try
        End Sub
    
        Public Sub OnAddInsUpdate(ByRef custom As Array) Implements _
          IDTExtensibility2.OnAddInsUpdate
        End Sub
    
        Public Sub OnStartupComplete(ByRef custom As Array) Implements _
          IDTExtensibility2.OnStartupComplete
        End Sub
    
        Public Sub OnBeginShutdown(ByRef custom As Array) Implements _
          IDTExtensibility2.OnBeginShutdown
        End Sub
    
        Public Sub QueryStatus(ByVal commandName As String, ByVal _
          neededText As vsCommandStatusTextWanted, ByRef status As _
          vsCommandStatus, ByRef commandText As Object) Implements _
          IDTCommandTarget.QueryStatus
            If commandName = "ContextCmd.Connect.newCmd" Then
                status = CType(vsCommandStatus.vsCommandStatusEnabled _
                  + vsCommandStatus.vsCommandStatusSupported, _
                  vsCommandStatus)
            Else
                status = vsCommandStatus.vsCommandStatusUnsupported
            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 = "ContextCmd.Connect.newCmd" Then
                    handled = True
                    System.Windows.Forms.MessageBox.Show("Add-in _
                      running...")
                End If
            End If
        End Sub
    End Class
    
  5. Agregue el código que desee ejecutar cuando se haga clic en el comando en el procedimiento Exec.

  6. Compile el complemento y, a continuación, ejecútelo.

  7. Muestre la Lista de tareas haciendo clic en Lista de tareas en el menú Ver.

  8. En el menú Herramientas, haga clic en Administrador de complementos.

  9. Active el complemento ContextCmd activando la casilla que hay junto a él en el Administrador de complementos.

  10. Haga clic con el botón secundario del mouse en la Lista de tareas.

    El comando del complemento ContextCmd aparece en el menú contextual.

Vea también

Tareas

Cómo: Controlar complementos con el Administrador de complementos

Cómo: Crear un complemento

Tutorial: Crear un asistente

Conceptos

Mostrar complementos en barras de herramientas y menús

Registro de complementos

Gráfico del modelo de objetos de automatización

Otros recursos

Crear complementos y asistentes

Modificadores y comandos de Visual Studio