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
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
.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
Agregue un archivo de clase y asígnele el nombre
FileAndContentTypes
.Agregue referencias a los siguientes ensamblados:
System.ComponentModel.Composition
Microsoft.VisualStudio.Text.Logic
Microsoft.VisualStudio.CoreUtility
Agregue las siguientes
using
directivas.using System.ComponentModel.Composition; using Microsoft.VisualStudio.Text.Classification; using Microsoft.VisualStudio.Utilities;
Declare una clase estática que contenga las definiciones.
internal static class FileAndContentTypeDefinitions {. . .}
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; }
Vinculación de una extensión de nombre de archivo a un tipo de contenido
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
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.
Agregue la clase que definió en este procedimiento.
Al exportar la clase de extensión, agregue un ContentTypeAttribute de tipo "hid" a ella.
[Export] [ContentType("hid")]