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


Пошаговое руководство: Доступ к DTE - объект расширения из редактора

Путем обращения к объект DTE можно автоматизировать Visual Studio несколькими различными способами. Можно получить объект DTE из надстройки Visual Studio с помощью ссылки на его идентификатору progid (или идентификатор progID). Дополнительные сведения см. в разделе Создание ссылок на сборки автоматизации и объект DTE2. Обычно в VSPackages, можно получить объект DTE путем вызова метода GetService с типом объектов DTE. Дополнительные сведения см. в разделе Пошаговое руководство: Управляемое расширение VSPackages с помощью автоматизации. В управляемых расширениях .NET Framework расширяемости (MEF) можно импортировать SVsServiceProvider а затем вызвать метод GetService с типом DTE.

Обязательные компоненты

Чтобы выполнить это пошаговое руководство, необходимо установить пакет SDK Visual Studio 2010. Дополнительные сведения о пакет Visual Studio SDK и загрузить его см. в Центр разработчиков расширяемости Visual Studio разделе на веб-сайте MSDN.

Получение объект DTE

Получить объект DTE из ServiceProvider

  1. Создайте проект классификатора редактора C# или Visual Basic. Назовите решение DTETest.

  2. Добавьте следующие ссылки на сборку в проект. Необходимо просмотреть \Visual Studio installation folder\Common7\IDE\PublicAssemblies\.

    • EnvDTE.dll

    • EnvDTE80.dll

    • Microsoft.VisualStudio.Shell.Immutable.10.0

  3. Перейдите к файлу DTETest и добавьте следующие директивы using (выписки Imports в Visual Basic).

    Imports EnvDTE
    Imports EnvDTE80
    Imports Microsoft.VisualStudio.Shell
    
    using EnvDTE;
    using EnvDTE80;
    using Microsoft.VisualStudio.Shell;
    
  4. В классе DTETestProvider, импортировать SVsServiceProvider.

    <Import()>
    Private ServiceProvider As SVsServiceProvider = Nothing
    
    [Import]
    internal SVsServiceProvider ServiceProvider = null;
    
  5. В методе GetClassifier() добавьте следующий код.

    Dim dte As DTE
    dte = CType(ServiceProvider.GetService(GetType(DTE)), DTE)
    
    DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));
    
  6. Если необходимо использовать интерфейс DTE2, то можно привести объект DTE на него.

См. также

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

Точки расширения редактора