Пошаговое руководство. Доступ к объекту DTE из расширения редактора
Работая с VSPackages, вы можете получить объект DTE, вызвав метод GetService с типом такого объекта. В расширениях Managed Extensibility Framework (MEF) можно импортировать SVsServiceProvider, а затем вызвать метод GetService с типом DTE.
Необходимые компоненты
Для выполнения этого пошагового руководства необходимо установить пакет SDK для Visual Studio. См. дополнительные сведения о пакете SDK для Visual Studio.
Получение объекта DTE
Создайте в VSIX проект на C# и назовите его DTETest. Добавьте шаблон элемента Editor Classifier (Классификатор редактора) и назовите его DTETest.
Дополнительные сведения: Создание расширения с помощью шаблона элемента редактора.
Добавьте в проект ссылки на следующие сборки:
- Microsoft.VisualStudio.Shell.Framework
- Microsoft.VisualStudio.Shell.Immutable.10.0
Добавьте в файл DTETestProvider.cs следующие директивы
using
:using EnvDTE; using Microsoft.VisualStudio.Shell;
Импортируйте в класс
DTETestProvider
элемент SVsServiceProvider.[Import] internal SVsServiceProvider ServiceProvider = null;
Добавьте в метод
GetClassifier()
следующий код перед инструкциейreturn
:ThreadHelper.ThrowIfNotOnUIThread(); DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));