チュートリアル: コンテンツ タイプとファイル名拡張子とをリンクさせる
エディター Managed Extensibility Framework (MEF) 拡張機能を使用して、独自のコンテンツ タイプを定義し、ファイル名拡張子をリンクさせることができます。 場合によっては、ファイル名拡張子が言語サービスによって既に定義されていることがあります。 ただし、これを MEF で使用するには、コンテンツ タイプにリンクさせる必要があります。
MEF プロジェクトを作成する
C# VSIX プロジェクトを作成します。 ([新しいプロジェクト] ダイアログで、[Visual C#]、[拡張機能]、[VSIX プロジェクト] の順に選択します。) ソリューションに
ContentTypeTest
という名前を付けます。Source.extension.vsixmanifest ファイルで、[資産] タブにアクセスし、[種類] フィールドを [Microsoft.VisualStudio.MefComponent] に、[ソース] フィールドを [現在のソリューション内のプロジェクト] に、[プロジェクト] フィールドをプロジェクトの名前に設定します。
コンテンツ タイプを定義する
クラス ファイルを追加し、その名前を
FileAndContentTypes
にします。次のアセンブリへの参照を追加します。
System.ComponentModel.Composition
Microsoft.VisualStudio.Text.Logic
Microsoft.VisualStudio.CoreUtility
次の
using
ディレクティブを追加します。using System.ComponentModel.Composition; using Microsoft.VisualStudio.Text.Classification; using Microsoft.VisualStudio.Utilities;
定義を含む静的クラスを宣言します。
internal static class FileAndContentTypeDefinitions {. . .}
このクラスでは、"hid" という名前の ContentTypeDefinition をエクスポートし、その基本定義を "text" として宣言します。
internal static class FileAndContentTypeDefinitions { [Export] [Name("hid")] [BaseDefinition("text")] internal static ContentTypeDefinition hidingContentTypeDefinition; }
ファイル名拡張子とコンテンツ タイプとをリンクさせる
このコンテンツ タイプをファイル名拡張子にマップするには、拡張子が hid でコンテンツ タイプが "hid" の FileExtensionToContentTypeDefinition をエクスポートします。
internal static class FileAndContentTypeDefinitions { [Export] [Name("hid")] [BaseDefinition("text")] internal static ContentTypeDefinition hidingContentTypeDefinition; [Export] [FileExtension(".hid")] [ContentType("hid")] internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition; }
コンテンツ タイプをエディター エクスポートに追加する
エディター拡張機能を作成します。 たとえば、「チュートリアル: 余白のグリフの作成」で説明されている余白のグリフ拡張機能を使用できます。
この手順で定義したクラスを追加します。
拡張クラスをエクスポートするときに、タイプが "hid" の ContentTypeAttribute をそれに追加します。
[Export] [ContentType("hid")]