Поделиться через


Практическое руководство. Управление кодом при помощи модели кода Visual C++ (Visual C#)

Модель кода Visual Studio позволяет клиентам автоматизации находить определения кода в проекте и изменять эти элементы кода. Visual C++ предоставляет расширение базовой модели кода для целевого кода, относящегося к Visual C++.

Например, если свойство Language указывает, что данный элемент кода является объектом модели кода Visual C++ и Kind = vsCMElementClass, то можно использовать CodeClass2 из модели кода Visual Studio или VCCodeClass из модели кода Visual C++.

Следующая процедура демонстрирует проверку и создание кода при помощи модели, которая относится к Visual C++.

Чтобы добавить комментарий к первому файлу в проекте

  1. Создайте проект надстройки Visual Studio в Visual C#.

  2. В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET выберите Microsoft.VisualStudio.VCCodeModel и нажмите кнопку ОК.

  3. Добавьте using Microsoft.VisualStudio.VCCodeModel; в начало файла Connect.cs.

  4. Замените код в методе OnConnection следующим кодом:

    // 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. Чтобы построить надстройку, в меню Построение щелкните Построить решение.

  6. Откройте проект Visual C++ в интегрированной среде разработки (IDE) Visual Studio.

  7. В меню Сервис щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.

  8. Просмотрите первый файл в проекте для программного добавления комментариев.

Чтобы добавить новый файл в проект Visual C++

  1. Создайте проект надстройки Visual Studio в Visual C#.

  2. В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET выберите Microsoft.VisualStudio.VCCodeModel и нажмите кнопку ОК.

  3. Добавьте using Microsoft.VisualStudio.VCCodeModel; в начало файла Connect.cs.

  4. Замените код в методе OnConnection следующим кодом:

    //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. Чтобы построить надстройку, в меню Построение щелкните Построить решение.

  6. Откройте проект Visual C++ в интегрированной среде разработки Visual Studio.

  7. В меню Сервис щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.

    Примечание

    Если MyClass2.h уже существует, код выполнен не будет.

Чтобы добавить функцию в file.h

  1. Создайте проект надстройки Visual Studio в Visual C#.

  2. В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET, выберите Microsoft.VisualStudio.VCCodeModel и System.Windows.Forms, а затем нажмите кнопку ОК.

  3. Добавьте в начало файла Connect.cs следующие операторы using.

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Замените код в методе OnConnection следующим кодом:

    // 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. Чтобы построить надстройку, в меню Построение щелкните Построить решение.

  6. Откройте проект Visual C++ в интегрированной среде разработки Visual Studio и добавьте к нему file.h.

  7. В меню Сервис щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.

  8. Проверьте вставленный код в file.h.

Чтобы отобразить файлы с элементами кода верхнего уровня

  1. Создайте проект надстройки Visual Studio в Visual C#.

  2. В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET, выберите Microsoft.VisualStudio.VCCodeModel и System.Windows.Forms, а затем нажмите кнопку ОК.

  3. Добавьте в начало файла Connect.cs следующие операторы using.

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Замените код в методе OnConnection следующим кодом:

    // 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. Чтобы построить надстройку, в меню Построение щелкните Построить решение.

  6. Откройте проект Visual C++ в интегрированной среде разработки Visual Studio.

  7. В меню Сервис щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.

  8. Имена файлов с элементами кода верхнего уровня будут выведены в окнах с сообщениями.

Чтобы отобразить все элементы кода верхнего уровня

  1. Создайте проект надстройки Visual Studio в Visual C#.

  2. В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET, выберите Microsoft.VisualStudio.VCCodeModel и System.Windows.Forms, а затем нажмите кнопку ОК.

  3. Добавьте в начало файла Connect.cs следующие операторы using.

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. Замените код в методе OnConnection следующим кодом:

    // 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. Чтобы построить надстройку, в меню Построение щелкните Построить решение.

  6. Откройте проект Visual C++ в интегрированной среде разработки Visual Studio.

  7. В меню Сервис щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.

    В окнах сообщений отображаются имена элементов кода верхнего уровня.

См. также

Задачи

Практическое руководство. Управление кодом при помощи модели кода Visual C++ (Visual Basic)

Основные понятия

модель кода Visual C++

Практическое руководство. Поиск кода при помощи модели кода (Visual Basic)

Практическое руководство. Поиск кода при помощи модели кода (Visual C#)