Compartir a través de


Tutorial: Vinculación de un tipo de contenido a una extensión de nombre de archivo

Puede definir su propio tipo de contenido y vincularle una extensión de nombre de archivo mediante las extensiones managed Extensibility Framework (MEF) del editor. En algunos casos, la extensión de nombre de archivo ya está definida por un servicio de lenguaje. Sin embargo, para usarlo con MEF, todavía debe vincularlo a un tipo de contenido.

Creación de un proyecto MEF

  1. Cree un proyecto VSIX de C#. (En Cuadro de diálogo Nuevo proyecto , seleccione Visual C# / Extensibilidad y, después , Proyecto VSIX). Asigne un nombre a la solución ContentTypeTest.

  2. En el archivo source.extension.vsixmanifest, vaya a la pestaña Activos y establezca el campo Tipo en Microsoft.VisualStudio.MefComponent, el campo Origen en Un proyecto de la solución actual y el campo Project en el nombre del proyecto.

Definición del tipo de contenido

  1. Agregue un archivo de clase y asígnele el nombre FileAndContentTypes.

  2. Agregue referencias a los siguientes ensamblados:

    1. System.ComponentModel.Composition

    2. Microsoft.VisualStudio.Text.Logic

    3. Microsoft.VisualStudio.CoreUtility

  3. Agregue las siguientes using directivas.

    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text.Classification;
    using Microsoft.VisualStudio.Utilities;
    
    
  4. Declare una clase estática que contenga las definiciones.

    internal static class FileAndContentTypeDefinitions
    {. . .}
    
  5. En esta clase, exporte un ContentTypeDefinition denominado "hid" y declare su definición base como "text".

    internal static class FileAndContentTypeDefinitions
    {
        [Export]
        [Name("hid")]
        [BaseDefinition("text")]
        internal static ContentTypeDefinition hidingContentTypeDefinition;
    }
    
  • Para asignar este tipo de contenido a una extensión de nombre de archivo, exporte un FileExtensionToContentTypeDefinition que tenga la extensión .hid y el tipo de contenido "hid".

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

Agregar el tipo de contenido a una exportación del editor

  1. Cree una extensión del editor. Por ejemplo, puede usar la extensión de glifo de margen descrita en Tutorial: Crear un glifo de margen.

  2. Agregue la clase que definió en este procedimiento.

  3. Al exportar la clase de extensión, agregue un ContentTypeAttribute de tipo "hid" a ella.

    [Export]
    [ContentType("hid")]