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


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

Работая с VSPackages, вы можете получить объект DTE, вызвав метод GetService с типом такого объекта. В расширениях Managed Extensibility Framework (MEF) можно импортировать SVsServiceProvider, а затем вызвать метод GetService с типом DTE.

Необходимые компоненты

Для выполнения этого пошагового руководства необходимо установить пакет SDK для Visual Studio. См. дополнительные сведения о пакете SDK для Visual Studio.

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

  1. Создайте в VSIX проект на C# и назовите его DTETest. Добавьте шаблон элемента Editor Classifier (Классификатор редактора) и назовите его DTETest.

    Дополнительные сведения: Создание расширения с помощью шаблона элемента редактора.

  2. Добавьте в проект ссылки на следующие сборки:

    • Microsoft.VisualStudio.Shell.Framework
    • Microsoft.VisualStudio.Shell.Immutable.10.0
  3. Добавьте в файл DTETestProvider.cs следующие директивы using:

    using EnvDTE;
    using Microsoft.VisualStudio.Shell;
    
  4. Импортируйте в класс DTETestProvider элемент SVsServiceProvider.

    [Import]
    internal SVsServiceProvider ServiceProvider = null;
    
  5. Добавьте в метод GetClassifier() следующий код перед инструкцией return:

    ThreadHelper.ThrowIfNotOnUIThread();
    DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));
    

См. также