Практическое руководство. Получение ссылок на объекты DTE и DTE2
Примечание
В Visual Studio 2013 использовать надстройки не рекомендуется.Рекомендуется обновить надстройки до расширений VSPackage.Для получения дополнительной информации см. Часто задаваемые вопросы. Преобразование надстроек в расширения VSPackage.
В сборке EnvDTE объект DTE представляет интегрированную среду разработки (IDE) Visual Studio и высочайшего уровня объект в иерархии модели автоматизации. Получить доступ к базовой модели автоматизации автоматизации, приложение должно ссылаться на этот объект.
Однако добавление сборки EnvDTE80 предоставляет объект замены высшего уровня, который называется DTE2 и замещает объект DTE. Хотя оба объекта ACT-и запрограммированы-подобн, DTE2 содержит новую функцию и узлы новые и обновленные объекты и коллекции.
При создании новых приложений автоматизации, рекомендуется создать и ссылки на объект- к объект DTE2 для предоставления доступа к новым возможностям и к объекту DTE для предоставления доступа к прочие основной функции. Также рекомендуется создать при использовании возможности новые объекты и коллекции в DTE2 вместо них в DTE.
Ниже показано, как получить ссылку на объект DTE2. (Та же процедура применима и к объекту DTE). Перед добавлением ссылки на объект необходимо добавить ссылки на соответствующие сборки и библиотеку типов. Для получения дополнительной информации см. Практическое руководство. Добавление ссылок на пространства имен автоматизации.
Программный идентификатор (ProgID), используемый для Visual Studio 2013 VisualStudio.DTE.12.0. Затем можно привести возвращенный объект к интерфейсу DTE2.
Если они называются, свойства, методы и события DTE2 возвращают типы DTE. Например, Solution возвращает объект Solution, а не объект Solution2 как одно может ожидать. Именно поэтому при использовании членов DTE2 или других членов типов необходимо выполнить их явное приведение. Такая конструкция повысить целостность и снижает путаницу. Сборка EnvDTE80.dll постоянно возвращает один и тот же интерфейс для всех свойств DTE2. Возврат последней версии интерфейса будет смущать- для примера, если будущая версия Visual Studio будет иметь тип DTE3, то некоторые интерфейсы могут возвращать DTE, некоторые — DTE2, а некоторые — DTE3. Кроме того, оно может создать проблем com-взаимодействия, поскольку интерфейсы «2» в EnvDTE80 являются производными от интерфейсов EnvDTE. Например, класс Window2 является производным от класса Window; если свойство DTE было добавлено в Window2, то скрыватьTfо значение свойства Windows, а не работать с приложениями COM.
Примечание
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях.Эти элементы определяются используемым выпуском Visual Studio и его параметрами.Для получения дополнительной информации см. Настройка параметров разработки в Visual Studio.
Создание ссылки на объект DTE2 в Visual Basic и C#
В коде добавьте следующее:
' Get an instance of the currently running Visual Studio IDE. Dim DTE2 as EnvDTE80.DTE2 DTE2 = System.Runtime.InteropServices.Marshal. _ GetActiveObject("VisualStudio.DTE.12.0")
// Get an instance of the currently running Visual Studio IDE. EnvDTE80.DTE2 dte2; dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal. GetActiveObject("VisualStudio.DTE.12.0");
Чтобы установить ссылку на объект DTE в Visual C++ (ATL)
В коде добавьте следующее:
CComPtr<EnvDTE::_DTE> m_pDTE; CComPtr<EnvDTE80::DTE2> m_pDTE2; CLSID clsid; CLSID clsid2; CLSIDFromProgID(L"VisualStudio.DTE.12.0",&clsid); CLSIDFromProgID(L"VisualStudio.DTE.12.0",&clsid2); CComPtr<IUnknown> punk; CComPtr<IUnknown> punk2; // Get a running instance of Visual Studio. HRESULT hr = GetActiveObject(clsid,NULL,&punk); hr = GetActiveObject(clsid2,NULL,&punk2); m_pDTE = punk; m_pDTE2 = punk2;
См. также
Задачи
Практическое руководство. Добавление ссылок на пространства имен автоматизации
Практическое руководство. Управление надстройками с помощью диспетчера надстроек
Основные понятия
Присоединение к конкретным экземплярам интегрированной среды разработки
Диаграмма модели объектов автоматизации