言語サービスとエディターの拡張機能の概要

エディター拡張機能を使用すると、独自のプログラミング言語または任意のコンテンツタイプに、アウトライン、かっこの一致、IntelliSense、電球などの言語サービス機能を追加できます。 また、テキストの色分け、余白、表示要素、その他のビジュアル要素など、Visual Studio エディターの外観と動作をカスタマイズすることもできます。 また、独自の種類のコンテンツを定義し、コンテンツが表示されるテキスト ビューの外観と動作を指定することもできます。

エディター拡張機能の記述を開始するには、Visual Studio SDK の一部としてインストールされているエディター プロジェクト テンプレートを使用します。 Visual Studio SDK は、VSPackage を使用するか Managed Extensibility Framework (MEF) を使用して、Visual Studio 拡張機能の開発を容易にするダウンロード可能なツールのセットです。

Note

Visual Studio SDK の詳細については、「Visual Studio SDK」を参照してください。

独自のエディター拡張機能を作成する前に、次の概念とテクノロジについて学習することをお勧めします。

Windows Presentation Foundation (WPF) とエディターの拡張機能

Visual Studio エディターのユーザー インターフェイス (UI) は、Windows Presentation Foundation (WPF) を使用して実装されます。 WPF は、ビジネス ロジックからコードの視覚的な側面を分離する、豊富なビジュアル エクスペリエンスと一貫したプログラミング モデルを提供します。 エディター拡張機能を作成するときに、多くの WPF 要素と機能を使用できます。 詳細については、Windows Presentation Foundation に関するページを参照してください。

Managed Extensibility Framework (MEF) とエディターの拡張機能

Visual Studio エディターでは、Managed Extensibility Framework (MEF) を使用してそのコンポーネントと拡張機能が管理されます。 MEF を使用すると、開発者は Visual Studio などのホスト アプリケーションの拡張機能を簡単に作成することもできます。 このフレームワークでは、MEF コントラクトに従って拡張機能を定義し、MEF コンポーネント パーツとしてエクスポートします。 ホスト アプリケーションでは、構成要素を検索して登録し、適切なコンテキストに適用されていることを確認することで、管理します。

Note

エディターでの MEF の詳細については、「エディターでの Managed Extensibility Framework」を参照してください。

Visual Studio エディターの拡張ポイントと拡張機能

エディター拡張ポイントは、カスタマイズおよび拡張できる MEF 構成要素です。 場合によっては、インターフェイスを実装し、適切なメタデータと共にエクスポートすることによって、拡張ポイントを拡張します。 それ以外の場合は、拡張を宣言し、特定の型としてエクスポートするだけです。

エディター拡張機能の基本的な種類を次に示します。

エディター拡張機能の配置

Visual Studio では、 source.extension.vsixmanifest という名前のメタデータ ファイルをソリューションに追加し、ソリューションをビルドした後、Visual Studio で認識されているフォルダーにバイナリ ファイルとマニフェストのコピーを追加することによって、エディター拡張機能を配置します。 マニフェスト ファイルでは、拡張機能に関する基本的な情報 (名前、作成者、バージョン、コンテンツの種類など) を定義します。 VSIX マニフェスト ファイルと拡張機能の配置方法の詳細については、Visual Studio 拡張機能の配布に関するページを参照してください。

コンピューターに拡張機能をインストールする場合は、Visual Studio が認識しているフォルダーのサブフォルダーにバイナリとマニフェストを含めます。

警告

Visual Studio に含まれているエディター拡張機能テンプレートの 1 つを使用する場合、マニフェストと配置場所の詳細について心配する必要はありません。 テンプレートには、拡張機能を登録して配置するために必要なすべてが含まれています。

実験用インスタンスで拡張機能を実行する

拡張機能を開発している間に、Visual Studio の作業バージョンを分離するには、次の実験的なフォルダー (Windows Vista および Windows 7) にデプロイします。

{%LOCALAPPDATA%}\VisualStudio\10.0Exp\Extensions\{Company}\{ExtensionID}

ここで、%LOCALAPPDATA% はログオン ユーザーの名前、Company は拡張機能を所有する会社の名前、ExtensionID は拡張機能の ID です。

実験的な場所に拡張機能をデプロイすると、デバッグ モードで実行されます。 Visual Studio の 2 番目のインスタンスが起動され、Microsoft Visual Studio - Experimental Instance という名前が付けられます。

拡張機能を管理する

Visual Studio の拡張機能は、[ツール] メニューの [拡張機能と更新プログラム] に一覧表示されます。 実験用インスタンスで拡張機能をテストする場合は、実験用インスタンスの [拡張機能と更新プログラム] に一覧表示されますが、開発インスタンスには記載されません。

詳細については、「Visual Studio 拡張機能の検索と使用」を参照してください。

テンプレートを使用してエディター拡張機能を作成する

エディター テンプレートを使用して、分類子、表示要素、余白をカスタマイズする MEF 拡張機能を作成できます。 C# と Visual Basic プロジェクトの両方のテンプレートがあります。 詳細については、「エディター項目テンプレートを使用して拡張機能を作成する」を参照してください。

また、VSIX プロジェクト テンプレートを使用して拡張機能を作成することもできます。 このテンプレートは、あらゆる種類の拡張機能を配置するために必要な要素のみを提供します。また、source.extension.vsixmanifest ファイル、必要なアセンブリ参照、拡張機能を配置するためのビルド タスクを含むプロジェクト ファイルを含みます。 詳細については、「VSIX プロジェクト テンプレート」を参照してください。

また、Visual Studio パッケージ拡張機能からエディター MEF コンポーネントを作成することもできます。 詳細については、次のチュートリアルを参照してください。