Partager via


Comment : manipuler le code à l'aide du modèle de code Visual C++ (Visual C#)

Mise à jour : novembre 2007

Le modèle de code de Visual Studio offre aux clients Automation la possibilité de découvrir des définitions de code dans un projet et de modifier ces éléments de code. Visual C++ fournit une extension au modèle de code principal pour cibler le code spécifique à Visual C++.

Par exemple, si la propriété Language indique qu'un élément de code donné est un objet du modèle de code de Visual C++, et que Kind = vsCMElementClass, vous pouvez choisir d'utiliser CodeClass2 à partir du modèle de code de Visual Studio, ou d'utiliser VCCodeClass à partir du modèle de code de Visual C++.

Les procédures suivantes montrent comment examiner et générer le code à l'aide du modèle de code spécifique à Visual C++.

Pour ajouter un commentaire au premier fichier dans le projet

  1. Créez un projet de complément Visual Studio dans Visual C#.

  2. Dans le menu Projet, cliquez sur Ajouter une référence, sur l'onglet .NET, sélectionnez Microsoft.VisualStudio.VCCodeModel, puis cliquez sur OK.

  3. Ajoutez using Microsoft.VisualStudio.VCCodeModel; au début du fichier Connect.cs.

  4. Remplacez le code de la méthode OnConnection par le code suivant :

    // 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. Pour générer le complément, cliquez sur Générer la solution dans le menu Générer.

  6. Ouvrez un projet Visual C++ dans l'environnement de développement intégré (IDE) de Visual Studio.

  7. Dans le menu Outils, cliquez sur Gestionnaire de compléments, puis sélectionnez votre complément dans la boîte de dialogue Gestionnaire de compléments. Cliquez sur OK pour exécuter votre complément.

  8. Examinez les commentaires ajoutés par programme dans le premier fichier du projet.

Pour ajouter un nouveau fichier à un projet Visual C++

  1. Créez un projet de complément Visual Studio dans Visual C#.

  2. Dans le menu Projet, cliquez sur Ajouter une référence, sur l'onglet .NET, sélectionnez Microsoft.VisualStudio.VCCodeModel, puis cliquez sur OK.

  3. Ajoutez using Microsoft.VisualStudio.VCCodeModel; au début du fichier Connect.cs.

  4. Remplacez le code de la méthode OnConnection par le code suivant :

    //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. Pour générer le complément, cliquez sur Générer la solution dans le menu Générer.

  6. Ouvrez un projet Visual C++ dans l'IDE de Visual Studio.

  7. Dans le menu Outils, cliquez sur Gestionnaire de compléments, puis sélectionnez votre complément dans la boîte de dialogue Gestionnaire de compléments. Cliquez sur OK pour exécuter votre complément.

    Remarque :

    Si MyClass2.h existe déjà, le code échoue.

Pour ajouter une fonction à file.h

  1. Créez un projet de complément Visual Studio dans Visual C#.

  2. Dans le menu Projet, cliquez sur Ajouter une référence, sur l'onglet .NET, sélectionnez Microsoft.VisualStudio.VCCodeModel et System.Windows.Forms, puis cliquez sur OK.

  3. Ajoutez les instructions d'utilisation suivantes au début du fichier Connect.cs :

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Remplacez le code de la méthode OnConnection par le code suivant :

    // 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. Pour générer le complément, cliquez sur Générer la solution dans le menu Générer.

  6. Ouvrez un projet Visual C++ dans l'IDE de Visual Studio et ajoutez file.h.

  7. Dans le menu Outils, cliquez sur Gestionnaire de compléments, puis sélectionnez votre complément dans la boîte de dialogue Gestionnaire de compléments. Cliquez sur OK pour exécuter votre complément.

  8. Examinez le code inséré dans file.h.

Pour afficher les fichiers qui incluent des éléments de code de niveau supérieur

  1. Créez un projet de complément Visual Studio dans Visual C#.

  2. Dans le menu Projet, cliquez sur Ajouter une référence, sur l'onglet .NET, sélectionnez Microsoft.VisualStudio.VCCodeModel et System.Windows.Forms, puis cliquez sur OK.

  3. Ajoutez les instructions d'utilisation suivantes au début du fichier Connect.cs :

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Remplacez le code dans la méthode OnConnection par le code suivant :

    // 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. Pour générer le complément, cliquez sur Générer la solution dans le menu Générer.

  6. Ouvrez un projet Visual C++ dans l'IDE de Visual Studio.

  7. Dans le menu Outils, cliquez sur Gestionnaire de compléments, puis sélectionnez votre complément dans la boîte de dialogue Gestionnaire de compléments. Cliquez sur OK pour exécuter votre complément.

  8. Les messages affichent les noms de fichiers qui contiennent des éléments de code de niveau supérieur.

Pour afficher tous les éléments de code de niveau supérieur

  1. Créez un projet de complément Visual Studio dans Visual C#.

  2. Dans le menu Projet, cliquez sur Ajouter une référence, sur l'onglet .NET, sélectionnez Microsoft.VisualStudio.VCCodeModel et System.Windows.Forms, puis cliquez sur OK.

  3. Ajoutez les instructions d'utilisation suivantes au début du fichier Connect.cs :

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Remplacez le code dans la méthode OnConnection par le code suivant :

    // 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. Pour générer le complément, cliquez sur Générer la solution dans le menu Générer.

  6. Ouvrez un projet Visual C++ dans l'IDE de Visual Studio.

  7. Dans le menu Outils, cliquez sur Gestionnaire de compléments, puis sélectionnez votre complément dans la boîte de dialogue Gestionnaire de compléments. Cliquez sur OK pour exécuter votre complément.

    Les messages affichent les noms des éléments de code de niveau supérieur.

Voir aussi

Tâches

Comment : manipuler le code à l'aide du modèle de code Visual C++ (Visual Basic)

Concepts

Modèle de code Visual C++

Découverte de code à l'aide du modèle de code (Visual Basic)

Découverte de code à l'aide du modèle de code (Visual C#)