Cómo: Manipular código mediante el modelo de código de Visual C++ (Visual Basic)

En Visual Studio 2013, los complementos están desusados. Se recomienda actualizar los complementos a las extensiones de VSPackage. Para obtener más información sobre cómo actualizar, vea Preguntas más frecuentes: Convertir complementos en extensiones de VSPackage.

El modelo de código de Visual Studio proporciona a los clientes de automatización la posibilidad de localizar definiciones de código en un proyecto y modificar esos elementos de código. Visual C++ proporciona una extensión al modelo de código central destinada al código específico de Visual C++.

Por ejemplo, si la propiedad Language indica que un elemento de código dado es un objeto del modelo de código de Visual C++ y Kind = vsCMElementClass, puede elegir entre usar la clase CodeClass2 del modelo de código de Visual Studio o la clase VCCodeClass del modelo de código de Visual C++.

Los procedimientos siguientes muestran cómo examinar y generar el código utilizando el modelo de código específico para Visual C++.

Para agregar un comentario al primer archivo del proyecto

  1. Cree un proyecto de complemento de Visual Studio en Visual Basic.

  2. En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y haga clic en Aceptar.

  3. Agregue Imports Microsoft.VisualStudio.VCCodeModel al principio del archivo Connect.vb.

  4. Reemplace el código del método OnConnection con el código siguiente:

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal  _
      connectMode As ext_ConnectMode, ByVal addInInst As Object, _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        test(_applicationObject)
    End Sub
    
    Sub test(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElement = CType(vcCM.CodeElements.Item(1), _
          VCCodeElement)
        AddCommentAtStart(vcCodeElement)
        AddCommentAtEnd(vcCodeElement)
    End Sub
    
    ' Project Property
    ' StartPointOf Property
    ' Adds a comment before the VCCodeElement declaration.
    Sub AddCommentAtStart(ByVal vcCodeElement As VCCodeElement)
        Dim textPoint As TextPoint
        textPoint = vcCodeElement.StartPointOf(vsCMPart.vsCMPartWhole)
        textPoint.CreateEditPoint().Insert("/*This is a Start_ Comment*/")
    End Sub
    
    Sub AddCommentAtEnd(ByVal vcCodeElement As VCCodeElement)
        Dim textPoint As TextPoint
        textPoint = vcCodeElement.EndPointOf(vsCMPart.vsCMPartWhole)
        textPoint.CreateEditPoint().Insert("/*End Comment*/")
    End Sub
    
  5. Para compilar el complemento, haga clic en Generar solución en el menú Generar.

  6. Abra un proyecto de Visual C++ en el entorno de desarrollo integrado (IDE) de Visual Studio.

  7. En el menú Herramientas, haga clic en Administrador de complementos y seleccione el complemento del cuadro de diálogo Administrador de complementos. Haga clic en Aceptar para ejecutar el complemento.

  8. Examine el primer archivo del proyecto para ver los comentarios de programación agregados.

Para agregar un nuevo archivo a un proyecto de Visual C++

  1. Cree un proyecto de complemento de Visual Studio en Visual Basic.

  2. En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y haga clic en Aceptar.

  3. Agregue Imports Microsoft.VisualStudio.VCCodeModel al principio del archivo Connect.vb.

  4. Reemplace el código del método OnConnection con el código siguiente:

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
      connectMode As ext_ConnectMode, ByVal addInInst As Object,  _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        GetVCCodeElement(_applicationObject)
    End Sub
    
    ' Shows how to get a VCCodeElement.
    Sub GetVCCodeElement(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElement = CType(vcCM.AddClass("MyClass2", "MyClass2.h"), _
          VCCodeElement)
    End Sub
    
  5. Para compilar el complemento, haga clic en la opción Generar solución del menú Generar.

  6. Abra un proyecto de Visual C++ en el IDE de Visual Studio.

  7. En el menú Herramientas, haga clic en Administrador de complementos y seleccione el complemento del cuadro de diálogo Administrador de complementos. Haga clic en Aceptar para ejecutar el complemento.

    Nota

    Si MyClass2.h ya existe, se produce un error en el código.

Para agregar una función a file.h

  1. Cree un proyecto de complemento de Visual Studio en Visual Basic.

  2. En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y haga clic en Aceptar.

  3. Agregue Imports Microsoft.VisualStudio.VCCodeModel al principio del archivo Connect.vb.

  4. Reemplace el código del método OnConnection con el código siguiente:

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
      connectMode As ext_ConnectMode, ByVal addInInst As Object, _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        DisplayName(_applicationObject)
    End Sub
    
    ' DisplayName
    ' Shows the DisplayName of a function which includes the parameter 
    ' names.
    Sub DisplayName(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElement = CType(vcCM.AddFunction("MyFunction", "File.h", _
          vsCMFunction.vsCMFunctionFunction, "void"), VCCodeElement)
        MsgBox(vcCodeElement.DisplayName)
    End Sub
    
  5. Para compilar el complemento, haga clic en la opción Generar solución del menú Generar.

  6. Abra un proyecto de Visual C++ en el IDE de Visual Studio y agréguele file.h.

  7. En el menú Herramientas, haga clic en Administrador de complementos y seleccione el complemento del cuadro de diálogo Administrador de complementos. Haga clic en Aceptar para ejecutar el complemento.

  8. Examine el código insertado en file.h.

Para mostrar archivos que incluyen los elementos de código de nivel superior

  1. Cree un proyecto de complemento de Visual Studio en Visual Basic.

  2. En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y haga clic en Aceptar.

  3. Agregue Imports Microsoft.VisualStudio.VCCodeModel al principio del archivo Connect.vb.

  4. Reemplace el código del método OnConnection por el siguiente código:

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
      connectMode As ext_ConnectMode, ByVal addInInst As Object, _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        DisplayLocation(_applicationObject)
    End Sub
    
    Sub DisplayLocation(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        For Each vcCodeElement In vcCM.CodeElements
            MsgBox(vcCodeElement.Name + " is declared in " _
              & vcCodeElement.Location)
        Next
    End Sub
    
  5. Para compilar el complemento, haga clic en la opción Generar solución del menú Generar.

  6. Abra un proyecto de Visual C++ en el IDE de Visual Studio.

  7. En el menú Herramientas, haga clic en Administrador de complementos y seleccione el complemento del cuadro de diálogo Administrador de complementos. Haga clic en Aceptar para ejecutar el complemento.

    Los cuadros de mensaje muestran nombres de archivo que contienen elementos de código de nivel superior.

Para mostrar elementos de elemento de código de nivel superior

  1. Cree un proyecto de complemento de Visual Studio en Visual Basic.

  2. En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y haga clic en Aceptar.

  3. Agregue Imports Microsoft.VisualStudio.VCCodeModel al principio del archivo Connect.vb.

  4. Reemplace el código del método OnConnection por el siguiente código:

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
     connectMode As Extensibility.ext_ConnectMode, ByVal addInInst _
     As Object, ByRef custom As System.Array) Implements _
     Extensibility.IDTExtensibility2.OnConnection
    
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        FindItem(_applicationObject)
    End Sub
    
    Sub FindItem(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElements As VCCodeElements
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElements = CType(vcCM.CodeElements, VCCodeElements)
        Dim i As Integer
        For i = 1 To vcCodeElements.Count
            MsgBox(vcCodeElements.Item(i).Name)
        Next
    End Sub
    
  5. Para compilar el complemento, haga clic en la opción Generar solución del menú Generar.

  6. Abra un proyecto de Visual C++ en el IDE de Visual Studio.

  7. En el menú Herramientas, haga clic en Administrador de complementos y seleccione el complemento del cuadro de diálogo Administrador de complementos. Haga clic en Aceptar para ejecutar el complemento.

    Los cuadros de mensaje muestran los nombres de los elementos de código de nivel superior.

Vea también

Conceptos

Modelo de código de Visual C++

Detectar código utilizando el modelo de código (Visual Basic)

Detectar código utilizando el modelo de código (Visual C#)