Практическое руководство. Управление кодом при помощи модели кода 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++.
Чтобы добавить комментарий к первому файлу в проекте
Создайте проект надстройки Visual Studio в Visual Basic.
В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET выберите Microsoft.VisualStudio.VCCodeModel и нажмите кнопку ОК.
Добавьте Imports Microsoft.VisualStudio.VCCodeModel в начало файла Connect.vb.
Замените код в методе 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
Чтобы построить надстройку, в меню Построение щелкните Построить решение.
Откройте проект Visual C++ в интегрированной среде разработки (IDE) Visual Studio.
В меню Свойства щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.
Просмотрите первый файл в проекте для программного добавления комментариев.
Чтобы добавить новый файл в проект Visual C++
Создайте проект надстройки Visual Studio в Visual Basic.
В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET выберите Microsoft.VisualStudio.VCCodeModel и нажмите кнопку ОК.
Добавьте Imports Microsoft.VisualStudio.VCCodeModel в начало файла Connect.vb.
Замените код в методе 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
Чтобы построить надстройку, в меню Построение щелкните Построить решение.
Откройте проект Visual C++ в интегрированной среде разработки Visual Studio.
В меню Свойства щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.
Примечание
Если MyClass2.h уже существует, код выполнен не будет.
Чтобы добавить функцию в file.h
Создайте проект надстройки Visual Studio в Visual Basic.
В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET выберите Microsoft.VisualStudio.VCCodeModel и нажмите кнопку ОК.
Добавьте Imports Microsoft.VisualStudio.VCCodeModel в начало файла Connect.vb.
Замените код в методе 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
Чтобы построить надстройку, в меню Построение щелкните Построить решение.
Откройте проект Visual C++ в интегрированной среде разработки Visual Studio и добавьте к нему file.h.
В меню Сервис щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.
Проверьте вставленный код в file.h.
Чтобы отобразить файлы с элементами кода верхнего уровня
Создайте проект надстройки Visual Studio в Visual Basic.
В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET выберите Microsoft.VisualStudio.VCCodeModel и нажмите кнопку ОК.
Добавьте Imports Microsoft.VisualStudio.VCCodeModel в начало файла Connect.vb.
Замените код в методе 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
Чтобы построить надстройку, в меню Построение щелкните Построить решение.
Откройте проект Visual C++ в интегрированной среде разработки Visual Studio.
В меню Сервис щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.
Имена файлов с элементами кода верхнего уровня будут выведены в окнах с сообщениями.
Чтобы отобразить все элементы кода верхнего уровня
Создайте проект надстройки Visual Studio в Visual Basic.
В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET выберите Microsoft.VisualStudio.VCCodeModel и нажмите кнопку ОК.
Добавьте Imports Microsoft.VisualStudio.VCCodeModel в начало файла Connect.vb.
Замените код в методе 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
Чтобы построить надстройку, в меню Построение щелкните Построить решение.
Откройте проект Visual C++ в интегрированной среде разработки Visual Studio.
В меню Сервис щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.
В окнах сообщений отображаются имена элементов кода верхнего уровня.
См. также
Основные понятия
Практическое руководство. Поиск кода при помощи модели кода (Visual Basic)
Практическое руководство. Поиск кода при помощи модели кода (Visual C#)