Procédure pas à pas : lier un type de contenu à une extension de nom de fichier

Vous pouvez définir votre propre type de contenu et y lier une extension de nom de fichier à l’aide des extensions MEF (Managed Extensibility Framework) de l’éditeur. Dans certains cas, l’extension de nom de fichier est déjà définie par un service de langage. Toutefois, pour l’utiliser avec MEF, vous devez toujours le lier à un type de contenu.

Créer un projet MEF

  1. Créez un projet VSIX C#. (Dans le Boîte de dialogue Nouveau projet , sélectionnez Visual C# / Extensibilité, puis VSIX Project.) Nommez la solution ContentTypeTest.

  2. Dans le fichier source.extension.vsixmanifest, accédez à l’onglet Ressources et définissez le champ Type sur Microsoft.VisualStudio.MefComponent, le champ Source sur Un projet dans la solution actuelle et le champ Projet sur le nom du projet.

Définir le type de contenu

  1. Ajoutez un fichier de classe et nommez-le FileAndContentTypes.

  2. Ajoutez des références aux assemblys suivants :

    1. System.ComponentModel.Composition

    2. Microsoft.VisualStudio.Text.Logic

    3. Microsoft.VisualStudio.CoreUtility

  3. Ajoutez les directives suivantes using .

    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text.Classification;
    using Microsoft.VisualStudio.Utilities;
    
    
  4. Déclarez une classe statique qui contient les définitions.

    internal static class FileAndContentTypeDefinitions
    {. . .}
    
  5. Dans cette classe, exportez un ContentTypeDefinition nom « hid » et déclarez sa définition de base comme « text ».

    internal static class FileAndContentTypeDefinitions
    {
        [Export]
        [Name("hid")]
        [BaseDefinition("text")]
        internal static ContentTypeDefinition hidingContentTypeDefinition;
    }
    
  • Pour mapper ce type de contenu à une extension de nom de fichier, exportez une FileExtensionToContentTypeDefinition extension .hid et le type de contenu « hid ».

    internal static class FileAndContentTypeDefinitions
    {
         [Export]
         [Name("hid")]
         [BaseDefinition("text")]
        internal static ContentTypeDefinition hidingContentTypeDefinition;
    
         [Export]
         [FileExtension(".hid")]
         [ContentType("hid")]
        internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition;
    }
    

Ajouter le type de contenu à une exportation de l’éditeur

  1. Créez une extension d’éditeur. Par exemple, vous pouvez utiliser l’extension de glyphe de marge décrite dans La procédure pas à pas : créer un glyphe de marge.

  2. Ajoutez la classe que vous avez définie dans cette procédure.

  3. Lorsque vous exportez la classe d’extension, ajoutez-y un ContentTypeAttribute type « hid ».

    [Export]
    [ContentType("hid")]