演练:通过编辑器扩展访问 DTE 对象
在 VSPackages 中,可以通过使用 DTE 对象类型调用 GetService 方法来获取 DTE 对象。 在 Managed Extensibility Framework (MEF) 扩展中,可以导入 SVsServiceProvider,然后使用 DTE 类型调用 GetService 方法。
先决条件
要按照本演练的步骤操作,必须安装 Visual Studio SDK。 有关详细信息,请参阅 Visual Studio SDK。
获取 DTE 对象
创建 C# VSIX 项目,将其命名为“DTETest”。 添加“编辑器分类器”项模板,将其命名为“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));