Cómo: Manipular código mediante el modelo de código de Visual C++ (Visual Basic)
Actualización: noviembre 2007
El modelo de código Visual Studio ofrece a los clientes de automatización la capacidad de buscar definiciones de código en un proyecto y modificar esos elementos de código. Visual C++ proporciona una extensión para el modelo de código principal para código de destino 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 Visual C++ y Kind = vsCMElementClass, puede elegir entre usar la clase CodeClass2 del modelo de código Visual Studio o la clase VCCodeClass del modelo de código 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
Cree un proyecto de complemento de Visual Studio en Visual Basic.
En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y haga clic en Aceptar.
Agregue Imports Microsoft.VisualStudio.VCCodeModel al principio del archivo Connect.vb.
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
Para generar el complemento, haga clic en Generar solución en el menú Generar.
Abra un proyecto de Visual C++ en el entorno de desarrollo integrado (IDE) de Visual Studio.
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.
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++
Cree un proyecto de complemento de Visual Studio en Visual Basic.
En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y haga clic en Aceptar.
Agregue Imports Microsoft.VisualStudio.VCCodeModel al principio del archivo Connect.vb.
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
Para generar el complemento, haga clic en Generar solución en el menú Generar.
Abra un proyecto de Visual C++ en el IDE de Visual Studio.
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
Cree un proyecto de complemento de Visual Studio en Visual Basic.
En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y haga clic en Aceptar.
Agregue Imports Microsoft.VisualStudio.VCCodeModel al principio del archivo Connect.vb.
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
Para generar el complemento, haga clic en Generar solución en el menú Generar.
Abra un proyecto Visual C++ en el IDE de Visual Studio IDE y agréguele file.h.
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.
Examine el código insertado en file.h.
Para mostrar archivos que incluyen los elementos de código de nivel superior
Cree un proyecto de complemento de Visual Studio en Visual Basic.
En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y haga clic en Aceptar.
Agregue Imports Microsoft.VisualStudio.VCCodeModel al principio del archivo Connect.vb.
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
Para generar el complemento, haga clic en Generar solución en el menú Generar.
Abra un proyecto de Visual C++ en el IDE de Visual Studio.
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 todos los elementos de elemento de código de nivel superior
Cree un proyecto de complemento de Visual Studio en Visual Basic.
En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y haga clic en Aceptar.
Agregue Imports Microsoft.VisualStudio.VCCodeModel al principio del archivo Connect.vb.
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
Para generar el complemento, haga clic en Generar solución en el menú Generar.
Abra un proyecto de Visual C++ en el IDE de Visual Studio.
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)