Compartir a través de


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

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

  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 generar 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 generar el complemento, haga clic en Generar solución en el 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 generar el complemento, haga clic en Generar solución en el menú Generar.

  6. Abra un proyecto Visual C++ en el IDE de Visual Studio IDE 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 generar el complemento, haga clic en Generar solución en el 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 generar el complemento, haga clic en Generar solución en el 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#)