チュートリアル: エディター拡張機能から DTE オブジェクトにアクセスする
VSPackage では、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));