Condividi tramite


Procedura: modificare il codice tramite il modello di codice di Visual C++ (Visual C#)

Aggiornamento: novembre 2007

Il modello di codice di Visual Studio consente ai client di automazione di individuare le definizioni di codice in un progetto e di modificarne gli elementi. In Visual C++ è disponibile un'estensione al modello di codice di base destinata al codice specifico di Visual C++.

Se, ad esempio, la proprietà Language indica che un determinato elemento di codice è un oggetto del modello di codice di Visual C++ e Kind = vsCMElementClass, è possibile scegliere di utilizzare CodeClass2 dal modello di codice di Visual Studio oppure VCCodeClass dal modello di codice di Visual C++.

Nelle procedure seguenti viene illustrato come esaminare e generare codice mediante il modello di codice specifico di Visual C++.

Per aggiungere un commento al primo file nel progetto

  1. Creare un progetto di componente aggiuntivo Visual Studio in Visual C#.

  2. Scegliere Aggiungi riferimento dal menu Progetto, quindi fare clic sulla scheda .NET e selezionare Microsoft.VisualStudio.VCCodeModel. Al termine, scegliere OK.

  3. Aggiungere using Microsoft.VisualStudio.VCCodeModel; all'inizio del file Connect.cs.

  4. Sostituire il codice nel metodo OnConnection con il codice seguente:

    // 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. Scegliere Genera soluzione dal menu Genera per generare il componente aggiuntivo.

  6. Aprire un progetto Visual C++ nell'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Visual Studio.

  7. Scegliere Gestione componenti aggiuntivi dal menu Strumenti e selezionare il componente aggiuntivo nella finestra di dialogo Gestione componenti aggiuntivi. Scegliere OK per eseguire il componente aggiuntivo.

  8. Esaminare i commenti aggiunti a livello di codice nel primo file del progetto.

Per aggiungere un nuovo file a un progetto Visual C++

  1. Creare un progetto di componente aggiuntivo Visual Studio in Visual C#.

  2. Scegliere Aggiungi riferimento dal menu Progetto, quindi fare clic sulla scheda .NET e selezionare Microsoft.VisualStudio.VCCodeModel. Al termine, scegliere OK.

  3. Aggiungere using Microsoft.VisualStudio.VCCodeModel; all'inizio del file Connect.cs.

  4. Sostituire il codice nel metodo OnConnection con il codice seguente:

    //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. Scegliere Genera soluzione dal menu Genera per generare il componente aggiuntivo.

  6. Aprire un progetto Visual C++ nell'ambiente di sviluppo integrato di Visual Studio.

  7. Scegliere Gestione componenti aggiuntivi dal menu Strumenti e selezionare il componente aggiuntivo nella finestra di dialogo Gestione componenti aggiuntivi. Scegliere OK per eseguire il componente aggiuntivo.

    Nota:

    Se MyClass2.h esiste già, il codice avrà esito negativo.

Per aggiungere una funzione a file.h

  1. Creare un progetto di componente aggiuntivo Visual Studio in Visual C#.

  2. Scegliere Aggiungi riferimento dal menu Progetto, quindi fare clic sulla scheda .NET e selezionare Microsoft.VisualStudio.VCCodeModel e System.Windows.Forms. Al termine, scegliere OK.

  3. Aggiungere le istruzioni using riportate di seguito all'inizio del file Connect.cs.

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Sostituire il codice nel metodo OnConnection con il codice seguente:

    // 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. Scegliere Genera soluzione dal menu Genera per generare il componente aggiuntivo.

  6. Aprire un progetto Visual C++ nell'ambiente di sviluppo integrato di Visual Studio a aggiungervi un file.h.

  7. Scegliere Gestione componenti aggiuntivi dal menu Strumenti e selezionare il componente aggiuntivo nella finestra di dialogo Gestione componenti aggiuntivi. Scegliere OK per eseguire il componente aggiuntivo.

  8. Esaminare il codice inserito in file.h.

Per visualizzare i file che includono elementi di codice di primo livello

  1. Creare un progetto di componente aggiuntivo Visual Studio in Visual C#.

  2. Scegliere Aggiungi riferimento dal menu Progetto, quindi fare clic sulla scheda .NET e selezionare Microsoft.VisualStudio.VCCodeModel e System.Windows.Forms. Al termine, scegliere OK.

  3. Aggiungere le istruzioni using riportate di seguito all'inizio del file Connect.cs.

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Sostituire il codice nel metodo OnConnection con il codice seguente:

    // 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. Scegliere Genera soluzione dal menu Genera per generare il componente aggiuntivo.

  6. Aprire un progetto Visual C++ nell'ambiente di sviluppo integrato di Visual Studio.

  7. Scegliere Gestione componenti aggiuntivi dal menu Strumenti e selezionare il componente aggiuntivo nella finestra di dialogo Gestione componenti aggiuntivi. Scegliere OK per eseguire il componente aggiuntivo.

  8. Nelle finestre di messaggio verranno visualizzati i nomi dei file che contengono gli elementi di codice di primo livello.

Per visualizzare tutte le voci degli elementi di codice di primo livello

  1. Creare un progetto di componente aggiuntivo Visual Studio in Visual C#.

  2. Scegliere Aggiungi riferimento dal menu Progetto, quindi fare clic sulla scheda .NET e selezionare Microsoft.VisualStudio.VCCodeModel e System.Windows.Forms. Al termine, scegliere OK.

  3. Aggiungere le istruzioni using riportate di seguito all'inizio del file Connect.cs.

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Sostituire il codice nel metodo OnConnection con il codice seguente:

    // 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. Scegliere Genera soluzione dal menu Genera per generare il componente aggiuntivo.

  6. Aprire un progetto Visual C++ nell'ambiente di sviluppo integrato di Visual Studio.

  7. Scegliere Gestione componenti aggiuntivi dal menu Strumenti e selezionare il componente aggiuntivo nella finestra di dialogo Gestione componenti aggiuntivi. Scegliere OK per eseguire il componente aggiuntivo.

    Nelle finestra di messaggio verranno visualizzati i nomi degli elementi di codice di primo livello.

Vedere anche

Attività

Procedura: modificare il codice tramite il modello di codice di Visual C++ (Visual Basic)

Concetti

Modello di codice Visual C++

Individuazione di codice mediante il modello di codice (Visual Basic)

Individuazione di codice mediante il modello di codice (Visual C#)