Exemplarische Vorgehensweise: Verknüpfen eines Inhaltstyps mit einer Dateinamenerweiterung
Sie können ihren eigenen Inhaltstyp definieren und eine Dateinamenerweiterung mit ihr verknüpfen, indem Sie die Editorerweiterungen für verwaltetes Extensibility Framework (MEF) verwenden. In einigen Fällen wird die Dateinamenerweiterung bereits von einem Sprachdienst definiert. Um es jedoch mit MEF zu verwenden, müssen Sie ihn trotzdem mit einem Inhaltstyp verknüpfen.
Erstellen eines MEF-Projekts
Erstellen Sie ein C#VSIX-Projekt. (Im Dialogfeld "Neues Projekt ", wählen Sie Visual C# / Erweiterbarkeit und dann VSIX-Projekt aus.) Benennen Sie die Lösung
ContentTypeTest
.Wechseln Sie in der Datei "source.extension.vsixmanifest" zur Registerkarte "Assets", und legen Sie das Feld "Typ" auf "Microsoft.VisualStudio.MefComponent", das Feld "Quelle" auf ein Projekt in der aktuellen Projektmappe und das Feld "Projekt" auf den Namen des Projekts fest.
Definieren des Inhaltstyps
Fügen Sie eine Klassendatei hinzu, und nennen Sie sie
FileAndContentTypes
.Fügen Sie Verweise auf die folgenden Assemblys hinzu:
System.ComponentModel.Composition
Microsoft.VisualStudio.Text.Logic
Microsoft.VisualStudio.CoreUtility
Fügen Sie die folgenden
using
Direktiven hinzu.using System.ComponentModel.Composition; using Microsoft.VisualStudio.Text.Classification; using Microsoft.VisualStudio.Utilities;
Deklarieren Sie eine statische Klasse, die die Definitionen enthält.
internal static class FileAndContentTypeDefinitions {. . .}
Exportieren Sie in dieser Klasse den ContentTypeDefinition Namen "hid", und deklarieren Sie die Basisdefinition als "Text".
internal static class FileAndContentTypeDefinitions { [Export] [Name("hid")] [BaseDefinition("text")] internal static ContentTypeDefinition hidingContentTypeDefinition; }
Verknüpfen einer Dateinamenerweiterung mit einem Inhaltstyp
Um diesen Inhaltstyp einer Dateinamenerweiterung zuzuordnen, exportieren Sie eine FileExtensionToContentTypeDefinition Datei, die die Erweiterung "hid " und den Inhaltstyp "hid" enthält.
internal static class FileAndContentTypeDefinitions { [Export] [Name("hid")] [BaseDefinition("text")] internal static ContentTypeDefinition hidingContentTypeDefinition; [Export] [FileExtension(".hid")] [ContentType("hid")] internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition; }
Hinzufügen des Inhaltstyps zu einem Editorexport
Erstellen Sie eine Editorerweiterung. Sie können z. B. die in exemplarische Vorgehensweise beschriebene Erweiterung "Randglyphe" verwenden: Erstellen einer Glyphe für den Rand.
Fügen Sie die klasse hinzu, die Sie in dieser Prozedur definiert haben.
Wenn Sie die Erweiterungsklasse exportieren, fügen Sie ihr einen ContentTypeAttribute "hid"-Typ hinzu.
[Export] [ContentType("hid")]