Condividi tramite


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

  1. Creare un progetto VSIX C#. (In Finestra di dialogo Nuovo progetto , selezionare Visual C# / Estendibilità e quindi progetto VSIX. Assegnare alla soluzione ContentTypeTestil nome .

  2. 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

  1. Aggiungere un file di classe e assegnargli il nome FileAndContentTypes.

  2. Aggiungere riferimenti agli assembly riportati di seguito:

    1. System.ComponentModel.Composition

    2. Microsoft.VisualStudio.Text.Logic

    3. Microsoft.VisualStudio.CoreUtility

  3. Aggiungere le direttive seguenti using .

    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text.Classification;
    using Microsoft.VisualStudio.Utilities;
    
    
  4. Dichiarare una classe statica che contiene le definizioni.

    internal static class FileAndContentTypeDefinitions
    {. . .}
    
  5. 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;
    }
    
  • 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

  1. Creare un'estensione dell'editor. Ad esempio, è possibile usare l'estensione del glifo del margine descritta in Procedura dettagliata: Creare un glifo del margine.

  2. Aggiungere la classe definita in questa procedura.

  3. Quando si esporta la classe di estensione, aggiungervi un ContentTypeAttribute di tipo "hid".

    [Export]
    [ContentType("hid")]