演练:通过编辑器扩展访问 DTE 对象

在 VSPackages 中,可以通过使用 DTE 对象类型调用 GetService 方法来获取 DTE 对象。 在 Managed Extensibility Framework (MEF) 扩展中,可以导入 SVsServiceProvider,然后使用 DTE 类型调用 GetService 方法。

先决条件

要按照本演练的步骤操作,必须安装 Visual Studio SDK。 有关详细信息,请参阅 Visual Studio SDK

获取 DTE 对象

  1. 创建 C# VSIX 项目,将其命名为“DTETest”。 添加“编辑器分类器”项模板,将其命名为“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));
    

另请参阅