Procedura dettagliata: Collegare un tipo di contenuto a un'estensione del nome file
È possibile definire il proprio tipo di contenuto e collegarvi un'estensione di file usando le estensioni MEF (Managed Extensibility Framework) dell'editor. In alcuni casi, l'estensione del nome file è già definita da un servizio di linguaggio. Tuttavia, per usarlo con MEF, è comunque necessario collegarlo a un tipo di contenuto.
Creare un progetto MEF
Creare un progetto VSIX C#. (In Finestra di dialogo Nuovo progetto , selezionare Visual C# / Estendibilità e quindi progetto VSIX. Assegnare alla soluzione
ContentTypeTest
il nome .Nel file source.extension.vsixmanifest passare alla scheda Asset e impostare il campo Tipo su Microsoft.VisualStudio.MefComponent, il campo Origine su Un progetto nella soluzione corrente e il campo Progetto sul nome del progetto.
Definire il tipo di contenuto
Aggiungere un file di classe e assegnargli il nome
FileAndContentTypes
.Aggiungere riferimenti agli assembly riportati di seguito:
System.ComponentModel.Composition
Microsoft.VisualStudio.Text.Logic
Microsoft.VisualStudio.CoreUtility
Aggiungere le direttive seguenti
using
.using System.ComponentModel.Composition; using Microsoft.VisualStudio.Text.Classification; using Microsoft.VisualStudio.Utilities;
Dichiarare una classe statica che contiene le definizioni.
internal static class FileAndContentTypeDefinitions {. . .}
In questa classe esportare un ContentTypeDefinition oggetto denominato "hid" e dichiararne la definizione di base come "text".
internal static class FileAndContentTypeDefinitions { [Export] [Name("hid")] [BaseDefinition("text")] internal static ContentTypeDefinition hidingContentTypeDefinition; }
Collegare un'estensione di file a un tipo di contenuto
Per eseguire il mapping di questo tipo di contenuto a un'estensione di file, esportare un FileExtensionToContentTypeDefinition oggetto con estensione hid e il tipo di contenuto "hid".
internal static class FileAndContentTypeDefinitions { [Export] [Name("hid")] [BaseDefinition("text")] internal static ContentTypeDefinition hidingContentTypeDefinition; [Export] [FileExtension(".hid")] [ContentType("hid")] internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition; }
Aggiungere il tipo di contenuto a un'esportazione dell'editor
Creare un'estensione dell'editor. Ad esempio, è possibile usare l'estensione del glifo del margine descritta in Procedura dettagliata: Creare un glifo del margine.
Aggiungere la classe definita in questa procedura.
Quando si esporta la classe di estensione, aggiungervi un ContentTypeAttribute di tipo "hid".
[Export] [ContentType("hid")]