Compartir a través de


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

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

  1. Cree un proyecto de complemento de Visual Studio en Visual C#.

  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 using Microsoft.VisualStudio.VCCodeModel; al principio del archivo Connect.cs.

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

    // Add-in code.
    using Microsoft.VisualStudio.VCCodeModel;
    public void OnConnection(object application,
     Extensibility.ext_ConnectMode connectMode, object addInInst,
     ref System.Array custom)
    {
        _applicationObject = (DTE2)application;
        )addInInstance = (AddIn)addInInst;
        // Pass the applicationObject member variable to the code example.
        test((DTE2)_applicationObject); 
    }
    
    public void test( DTE2 dte ) 
    { 
        VCCodeModel vcCM = null; 
        VCCodeElement vcCodeElement = null; 
        vcCM = ( ( VCCodeModel )( dte.Solution.Item( 1 ).CodeModel ) ); 
        vcCodeElement = ( ( VCCodeElement )
    ( vcCM.CodeElements.Item(1))); 
        AddCommentAtStart( vcCodeElement ); 
        AddCommentAtEnd( vcCodeElement ); 
    } 
    
    public void AddCommentAtStart(
      Microsoft.VisualStudio.VCCodeModel.VCCodeElement vcCodeElement )
    {
        TextPoint textPoint = null;
        textPoint = vcCodeElement.get_StartPointOf(
          vsCMPart.vsCMPartWhole, 0 );
        textPoint.CreateEditPoint().Insert("/*This is a Start Comment*/");
    }
    
    public void AddCommentAtEnd( 
      Microsoft.VisualStudio.VCCodeModel.VCCodeElement vcCodeElement )
    {
        TextPoint textPoint = null;
        textPoint = vcCodeElement.get_EndPointOf( vsCMPart.vsCMPartWhole, 0  
          );
        textPoint.CreateEditPoint().Insert( "/*End Comment*/" );
    }
    
  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 C#.

  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 using Microsoft.VisualStudio.VCCodeModel; al principio del archivo Connect.cs.

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

    //Add-in code.
    using Microsoft.VisualStudio.VCCodeModel;
    public void OnConnection(object application,
     Extensibility.ext_ConnectMode connectMode, object addInInst,
     ref System.Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Pass the applicationObject member variable to the code example.
        GetVCCodeElement((DTE2)_applicationObject); 
    }
    
    //  Shows how to get a VCCodeElement.
    public void GetVCCodeElement( DTE2 dte ) 
    {
        VCCodeModel vcCM = null; 
        VCCodeElement vcCodeElement = null; 
        vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )(
          dte.Solution.Item( 1 ).CodeModel ) ); 
        vcCodeElement = ( (
          Microsoft.VisualStudio.VCCodeModel.VCCodeElement )( 
          vcCM.AddClass( "MyClass2", "MyClass2.h",0,null, null,
          EnvDTE.vsCMAccess.vsCMAccessDefault ) ) ); 
    }
    
  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 C#.

  2. En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y System.Windows.Forms y, después, haga clic en Aceptar.

  3. Agregue las instrucciones siguientes al principio del archivo Connect.cs:

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Reemplace el código del método OnConnection con el código siguiente:

    // Add-in code.
    using Microsoft.VisualStudio.VCCodeModel;
    using System.Windows.Forms;
    public void OnConnection(object application,
     Extensibility.ext_ConnectMode connectMode, object addInInst,
     ref System.Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Pass the applicationObject member variable to the code example.
        DisplayName((DTE2)_applicationObject); 
    }
    
    // DisplayName
    // Shows the DisplayName of a function which includes the parameter 
    // names.
    public void DisplayName( DTE2 dte ) 
    { 
        VCCodeModel vcCM = null; 
        VCCodeElement vcCodeElement = null; 
        vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )(
          dte.Solution.Item( 1 ).CodeModel ) ); 
          vcCodeElement = ( (     
            Microsoft.VisualStudio.VCCodeModel.VCCodeElement )
            ( vcCM.AddFunction( "MyFunction", "File.h",  
            vsCMFunction.vsCMFunctionFunction, "void",
            null, EnvDTE.vsCMAccess.vsCMAccessDefault ) ) ); 
        MessageBox.Show( vcCodeElement.DisplayName); 
    }
    
  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 C#.

  2. En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y System.Windows.Forms y, después, haga clic en Aceptar.

  3. Agregue las instrucciones siguientes al principio del archivo Connect.cs:

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Reemplace el código del método OnConnection por el siguiente código:

    // Add-in code.
    using Microsoft.VisualStudio.VCCodeModel;
    using System.Windows.Forms;
    public void OnConnection(object application,
     Extensibility.ext_ConnectMode connectMode, object addInInst,
     ref System.Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Pass the applicationObject member variable to the code example.
        DisplayLocation((DTE2)_applicationObject); 
    }
    
    public void DisplayLocation( DTE2 dte ) 
    {
        VCCodeModel vcCM = null; 
        VCCodeElement vcCodeElement = null; 
        vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )(
          dte.Solution.Item( 1 ).CodeModel ) ); 
        foreach ( Microsoft.VisualStudio.VCCodeModel.VCCodeElement temp
          in vcCM.CodeElements ) 
        {
            vcCodeElement = temp;
            MessageBox.Show( vcCodeElement.Name + " is declared in " 
              + vcCodeElement.get_Location(vsCMWhere.vsCMWhereDefault)); 
        }
    }
    
  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.

  8. 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

  1. Cree un proyecto de complemento de Visual Studio en Visual C#.

  2. En el menú Proyecto, haga clic en Agregar referencia, haga clic en la ficha .NET, seleccione Microsoft.VisualStudio.VCCodeModel y System.Windows.Forms y, después, haga clic en Aceptar.

  3. Agregue las instrucciones siguientes al principio del archivo Connect.cs:

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Reemplace el código del método OnConnection por el siguiente código:

    // Add-in code.
    using Microsoft.VisualStudio.VCCodeModel;
    using System.Windows.Forms;
    public void OnConnection(object application,
     Extensibility.ext_ConnectMode connectMode, object addInInst,
     ref System.Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Pass the applicationObject member variable to the code example.
        FindItem((DTE2)_applicationObject); 
    }
    
    public void FindItem( DTE2 dte ) 
    {
        VCCodeModel vcCM = null; 
        VCCodeElements vcCodeElements = null; 
        vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )(
          dte.Solution.Item( 1 ).CodeModel ) ); 
        vcCodeElements =
          ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeElements )
          ( vcCM.CodeElements ) ); 
        int i = 0; 
        for ( i=1; i<=vcCodeElements.Count; i++ ) 
        {
            MessageBox.Show( vcCodeElements.Item( i ).Name); 
        }
    }
    
  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

Tareas

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

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#)