Пошаговое руководство: Доступ к 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
Создайте проект классификатора редактора C# или Visual Basic. Назовите решение DTETest.
Добавьте следующие ссылки на сборку в проект. Необходимо просмотреть \Visual Studio installation folder\Common7\IDE\PublicAssemblies\.
EnvDTE.dll
EnvDTE80.dll
Microsoft.VisualStudio.Shell.Immutable.10.0
Перейдите к файлу DTETest и добавьте следующие директивы using (выписки Imports в Visual Basic).
Imports EnvDTE Imports EnvDTE80 Imports Microsoft.VisualStudio.Shell
using EnvDTE; using EnvDTE80; using Microsoft.VisualStudio.Shell;
В классе DTETestProvider, импортировать SVsServiceProvider.
<Import()> Private ServiceProvider As SVsServiceProvider = Nothing
[Import] internal SVsServiceProvider ServiceProvider = null;
В методе GetClassifier() добавьте следующий код.
Dim dte As DTE dte = CType(ServiceProvider.GetService(GetType(DTE)), DTE)
DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));
Если необходимо использовать интерфейс DTE2, то можно привести объект DTE на него.