通过访问 DTE 对象,可以自动运行 Visual Studio 以多种不同方式。 可以从获取 Visual Studio DTE 对象外接程序通过引用它的编程标识符 (或 progID)。 有关更多信息,请参见 引用自动化程序集和 DTE2 对象。 通常在 Vspackage,通过调用使用 DTE 对象的类型的 GetService 方法来获得 DTE 对象。 有关更多信息,请参见 演练:使用自动化扩展的托管 Vspackage。 在 managed extensibility framework 扩展 (MEF),则可以导入 SVsServiceProvider 然后调用与 DTE类型的 GetService 方法。
系统必备
若要完成本演练,您必须安装 Visual Studio 2010 SDK。 有关 Visual Studio SDK 的信息以及如何下载它,请 Visual Studio 扩展性开发人员中心) 参见 MSDN 网站上。
获取 DTE 对象
获取服务提供程序 (ssp) DTE 对象
创建 c# 或 Visual Basic 编辑器分类器项目。 将解决方案命名为 DTETest。
添加对下列程序集的引用添加到项目。 必须浏览 \ Visual Studio 安装文件夹 \ Common7 \ IDE \ PublicAssemblies \。
EnvDTE.dll
EnvDTE80.dll
Microsoft.VisualStudio.Shell.Immutable.10.0
转到 DTETest 文件,并添加以下 using 指令 (在 Visual Basic 中Imports 语句)。
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 对象。