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


Практическое руководство. Получение ссылок на объекты 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;
    

См. также

Задачи

Практическое руководство. Добавление ссылок на пространства имен автоматизации

Практическое руководство. Управление надстройками с помощью диспетчера надстроек

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

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

Регистрация надстройки

Диаграмма модели объектов автоматизации

Другие ресурсы

Создание надстроек и мастеров