Demonstra Passo a passo: Vincular um tipo de conteúdo a uma extensão de nome de arquivo
Você pode definir seu próprio tipo de conteúdo e vincular uma extensão de nome de arquivo a ele usando as extensões do editor Managed Extensibility Framework (MEF). Em alguns casos, a extensão de nome de arquivo já está definida por um serviço de idioma. Mas, para usá-lo com o MEF, você ainda deve vinculá-lo a um tipo de conteúdo.
Criar um projeto MEF
Crie um projeto C# VSIX. (No Caixa de diálogo Novo Projeto, selecione Visual C# / Extensibilidade e, em seguida, Projeto VSIX.) Nomeie a solução
ContentTypeTest
.No arquivo source.extension.vsixmanifest, vá para a guia Ativos e defina o campo Tipo como Microsoft.VisualStudio.MefComponent, o campo Origem como Um projeto na solução atual e o campo Projeto como o nome do projeto.
Definir o tipo de conteúdo
Adicione um arquivo de classe e nomeie-o
FileAndContentTypes
.Adicione referências aos assemblies a seguir:
System.ComponentModel.Composition
Microsoft.VisualStudio.Text.Logic
Microsoft.VisualStudio.CoreUtility
Adicione as seguintes
using
diretivas.using System.ComponentModel.Composition; using Microsoft.VisualStudio.Text.Classification; using Microsoft.VisualStudio.Utilities;
Declare uma classe estática que contém as definições.
internal static class FileAndContentTypeDefinitions {. . .}
Nessa classe, exporte um ContentTypeDefinition nome "oculto" e declare sua definição base como "texto".
internal static class FileAndContentTypeDefinitions { [Export] [Name("hid")] [BaseDefinition("text")] internal static ContentTypeDefinition hidingContentTypeDefinition; }
Vincular uma extensão de nome de arquivo a um tipo de conteúdo
Para mapear esse tipo de conteúdo para uma extensão de nome de arquivo, exporte um que tenha a extensão .hid e o tipo de FileExtensionToContentTypeDefinition conteúdo "hid".
internal static class FileAndContentTypeDefinitions { [Export] [Name("hid")] [BaseDefinition("text")] internal static ContentTypeDefinition hidingContentTypeDefinition; [Export] [FileExtension(".hid")] [ContentType("hid")] internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition; }
Adicionar o tipo de conteúdo a uma exportação de editor
Crie uma extensão de editor. Por exemplo, você pode usar a extensão de glifo de margem descrita em Passo a passo: Criar um glifo de margem.
Adicione a classe definida neste procedimento.
Ao exportar a classe de extensão, adicione um ContentTypeAttribute do tipo "hid" a ela.
[Export] [ContentType("hid")]