Compartilhar via


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

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

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

  1. Adicione um arquivo de classe e nomeie-o FileAndContentTypes.

  2. Adicione referências aos assemblies a seguir:

    1. System.ComponentModel.Composition

    2. Microsoft.VisualStudio.Text.Logic

    3. Microsoft.VisualStudio.CoreUtility

  3. Adicione as seguintes using diretivas.

    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text.Classification;
    using Microsoft.VisualStudio.Utilities;
    
    
  4. Declare uma classe estática que contém as definições.

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

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

  2. Adicione a classe definida neste procedimento.

  3. Ao exportar a classe de extensão, adicione um ContentTypeAttribute do tipo "hid" a ela.

    [Export]
    [ContentType("hid")]