Partilhar via


Como manipular código usando o modelo de código do Visual C++ (Visual C#)

Em Visual Studio 2013, suplementos são preteridos. Recomendamos que você atualize seus suplementos para as extensões VSPackage. Para obter mais informações sobre como atualizar, consulte Perguntas frequentes: convertendo suplementos em extensões VSPackage.

O modelo de código do Visual Studio oferece aos clientes de automação a capacidade de localizar definições de código em um projeto e de modificar esses elementos de código. Visual C++ fornece uma extensão para o modelo de código principal para o código de destino que é específico a Visual C++.

Por exemplo, se a propriedade Language indicar que um determinado elemento de código é um objeto de modelo de código do Visual C++ e Kind = vsCMElementClass, então você poderá optar por usar CodeClass2 do modelo de código Visual Studio ou VCCodeClass do modelo de código Visual C++.

Os procedimentos a seguir demonstram como examinar e gerar código usando o modelo de código que é específico para o Visual C++.

Para adicionar um comentário ao primeiro arquivo no projeto

  1. Criar um Visual Studio projeto de suplemento no Visual C#.

  2. No menu Projeto, clique em Adicionar Referência, clique na guia .NET, selecione Microsoft.VisualStudio.VCCodeModel e clique em OK.

  3. Adicione using Microsoft.VisualStudio.VCCodeModel; ao cabeçalho do arquivo Connect.cs.

  4. Substitua o código no método OnConnection pelo seguinte código:

    // 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 o suplemento, clique em Compilar Solução no menu Compilação.

  6. Abra um projeto de Visual C++ no ambiente de desenvolvimento integrado (IDE) do Visual Studio.

  7. No menu de Ferramentas , clique Gerenciador de Suplementos, e então selecione o suplemento da caixa de diálogo Gerenciador de Suplementos . Clique OK para executar o suplemento.

  8. Examine o primeiro arquivo no projeto para os comentários adicionados programaticamente.

Para adicionar um novo arquivo a um projeto do Visual C++

  1. Criar um Visual Studio projeto de suplemento no Visual C#.

  2. No menu Projeto, clique em Adicionar Referência, clique na guia .NET, selecione Microsoft.VisualStudio.VCCodeModel e clique em OK.

  3. Adicione using Microsoft.VisualStudio.VCCodeModel; ao cabeçalho do arquivo Connect.cs.

  4. Substitua o código no método OnConnection pelo seguinte código:

    //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 o suplemento, clique em Compilar Solução no menu Compilação.

  6. Abra um projeto do Visual C++ na IDE do Visual Studio.

  7. No menu de Ferramentas , clique Gerenciador de Suplementos, e selecione o suplemento da caixa de diálogo Gerenciador de Suplementos . Clique OK para executar o suplemento.

    Dica

    Se MyClass2.h já existir, o código falhará.

Para adicionar uma função a file.h

  1. Criar um Visual Studio projeto de suplemento no Visual C#.

  2. No menu Projeto, clique em Adicionar Referência, clique na guia .NET, selecione Microsoft.VisualStudio.VCCodeModel e System.Windows.Forms e clique em OK.

  3. Adicione as seguintes instruções de uso na parte superior do arquivo Connect.cs:

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Substitua o código no método OnConnection pelo seguinte 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.
        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 o suplemento, clique em Compilar Solução no menu Compilação.

  6. Abra um projeto de Visual C++ no IDE do Visual Studio e adicione um arquivo .h.

  7. No menu de Ferramentas , clique Gerenciador de Suplementos, e então selecione o suplemento da caixa de diálogo Gerenciador de Suplementos . Clique OK para executar o suplemento.

  8. Examine o código inserido em file.h.

Para exibir arquivos que incluem elementos de código de alto nível

  1. Criar um Visual Studio projeto de suplemento no Visual C#.

  2. No menu Projeto, clique em Adicionar Referência, clique na guia .NET, selecione Microsoft.VisualStudio.VCCodeModel e System.Windows.Forms e clique em OK.

  3. Adicione as seguintes instruções de uso na parte superior do arquivo Connect.cs:

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Substitua o código no método OnConnection pelo seguinte 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 o suplemento, clique em Compilar Solução no menu Compilação.

  6. Abra um projeto do Visual C++ na IDE do Visual Studio.

  7. No menu de Ferramentas , clique Gerenciador de Suplementos, e então selecione o suplemento da caixa de diálogo Gerenciador de Suplementos . Clique OK para executar o suplemento.

  8. Caixas de mensagem exibem os nomes de arquivo que contêm os elementos de código de nível superior.

Para exibir todos os itens de elemento do código de alto nível

  1. Criar um Visual Studio projeto de suplemento no Visual C#.

  2. No menu Projeto, clique em Adicionar Referência, clique na guia .NET, selecione Microsoft.VisualStudio.VCCodeModel e System.Windows.Forms e clique em OK.

  3. Adicione as seguintes instruções de uso na parte superior do arquivo Connect.cs:

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Substitua o código no método OnConnection pelo seguinte 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 o suplemento, clique em Compilar Solução no menu Compilação.

  6. Abra um projeto do Visual C++ na IDE do Visual Studio.

  7. No menu de Ferramentas , clique Gerenciador de Suplementos, e então selecione o suplemento da caixa de diálogo Gerenciador de Suplementos . Clique OK para executar o suplemento.

    Caixas de mensagem exibe os nomes de elemento de código de nível superior.

Consulte também

Tarefas

Como manipular código usando o modelo de código do Visual C++ (Visual Basic)

Conceitos

Modelo de código do Visual C++

Descobrindo código usando o modelo de código (Visual Basic)

Descobrindo código usando o modelo de código (Visual C#)