Cómo: Manipular código mediante el modelo de código de Visual C++ (Visual Basic)
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 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 LanguageT:EnvDTE80.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
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 compilar 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 compilar el complemento, haga clic en la opción Generar solución del 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 compilar el complemento, haga clic en la opción Generar solución del menú Generar.
Abra un proyecto de Visual C++ en el IDE de Visual Studio 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 compilar el complemento, haga clic en la opción Generar solución del 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 compilar el complemento, haga clic en la opción Generar solución del 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)