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


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

В Visual Studio 2013 использовать надстройки не рекомендуется. Рекомендуется обновить надстройки до расширений VSPackage. Дополнительные сведения об обновлении см. в разделе Часто задаваемые вопросы. Преобразование надстроек в расширения VSPackage.

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

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

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

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

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

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

  3. Добавьте Imports Microsoft.VisualStudio.VCCodeModel в начало файла Connect.vb.

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

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal  _
      connectMode As ext_ConnectMode, ByVal addInInst As Object, _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        test(_applicationObject)
    End Sub
    
    Sub test(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElement = CType(vcCM.CodeElements.Item(1), _
          VCCodeElement)
        AddCommentAtStart(vcCodeElement)
        AddCommentAtEnd(vcCodeElement)
    End Sub
    
    ' Project Property
    ' StartPointOf Property
    ' Adds a comment before the VCCodeElement declaration.
    Sub AddCommentAtStart(ByVal vcCodeElement As VCCodeElement)
        Dim textPoint As TextPoint
        textPoint = vcCodeElement.StartPointOf(vsCMPart.vsCMPartWhole)
        textPoint.CreateEditPoint().Insert("/*This is a Start_ Comment*/")
    End Sub
    
    Sub AddCommentAtEnd(ByVal vcCodeElement As VCCodeElement)
        Dim textPoint As TextPoint
        textPoint = vcCodeElement.EndPointOf(vsCMPart.vsCMPartWhole)
        textPoint.CreateEditPoint().Insert("/*End Comment*/")
    End Sub
    
  5. Чтобы построить надстройку, в меню Построение щелкните Построить решение.

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

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

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

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

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

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

  3. Добавьте Imports Microsoft.VisualStudio.VCCodeModel в начало файла Connect.vb.

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

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
      connectMode As ext_ConnectMode, ByVal addInInst As Object,  _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        GetVCCodeElement(_applicationObject)
    End Sub
    
    ' Shows how to get a VCCodeElement.
    Sub GetVCCodeElement(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElement = CType(vcCM.AddClass("MyClass2", "MyClass2.h"), _
          VCCodeElement)
    End Sub
    
  5. Чтобы построить надстройку, в меню Построение щелкните Построить решение.

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

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

    Примечание

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

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

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

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

  3. Добавьте Imports Microsoft.VisualStudio.VCCodeModel в начало файла Connect.vb.

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

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
      connectMode As ext_ConnectMode, ByVal addInInst As Object, _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        DisplayName(_applicationObject)
    End Sub
    
    ' DisplayName
    ' Shows the DisplayName of a function which includes the parameter 
    ' names.
    Sub DisplayName(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElement = CType(vcCM.AddFunction("MyFunction", "File.h", _
          vsCMFunction.vsCMFunctionFunction, "void"), VCCodeElement)
        MsgBox(vcCodeElement.DisplayName)
    End Sub
    
  5. Чтобы построить надстройку, в меню Построение щелкните Построить решение.

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

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

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

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

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

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

  3. Добавьте Imports Microsoft.VisualStudio.VCCodeModel в начало файла Connect.vb.

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

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
      connectMode As ext_ConnectMode, ByVal addInInst As Object, _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        DisplayLocation(_applicationObject)
    End Sub
    
    Sub DisplayLocation(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        For Each vcCodeElement In vcCM.CodeElements
            MsgBox(vcCodeElement.Name + " is declared in " _
              & vcCodeElement.Location)
        Next
    End Sub
    
  5. Чтобы построить надстройку, в меню Построение щелкните Построить решение.

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

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

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

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

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

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

  3. Добавьте Imports Microsoft.VisualStudio.VCCodeModel в начало файла Connect.vb.

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

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
     connectMode As Extensibility.ext_ConnectMode, ByVal addInInst _
     As Object, ByRef custom As System.Array) Implements _
     Extensibility.IDTExtensibility2.OnConnection
    
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        FindItem(_applicationObject)
    End Sub
    
    Sub FindItem(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElements As VCCodeElements
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElements = CType(vcCM.CodeElements, VCCodeElements)
        Dim i As Integer
        For i = 1 To vcCodeElements.Count
            MsgBox(vcCodeElements.Item(i).Name)
        Next
    End Sub
    
  5. Чтобы построить надстройку, в меню Построение щелкните Построить решение.

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

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

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

См. также

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

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

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

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