Поделиться через


Пошаговое руководство. Связывание типа контента с расширением имени файла

Вы можете определить собственный тип контента и связать расширение имени файла с ним с помощью расширений Managed Extensibility Framework (MEF). В некоторых случаях расширение имени файла уже определено языковой службой. Но, чтобы использовать его с MEF, необходимо по-прежнему связать его с типом контента.

Создание проекта MEF

  1. Создайте проект VSIX на C#. (В Диалоговое окно "Новый проект" , выберите Visual C# / Расширяемость, а затем ПРОЕКТ VSIX.) Назовите решение ContentTypeTest.

  2. В файле source.extension.vsixmanifest перейдите на вкладку "Активы" и задайте для поля Type значение Microsoft.VisualStudio.MefComponent, поле "Источник" в проекте в текущем решении и поле "Проект" в качестве имени проекта.

Определение типа контента

  1. Добавьте файл класса с именем FileAndContentTypes.

  2. Добавьте ссылки на следующие сборки:

    1. System.ComponentModel.Composition

    2. Microsoft.VisualStudio.Text.Logic

    3. Microsoft.VisualStudio.CoreUtility

  3. Добавьте следующие using директивы.

    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text.Classification;
    using Microsoft.VisualStudio.Utilities;
    
    
  4. Объявите статический класс, содержащий определения.

    internal static class FileAndContentTypeDefinitions
    {. . .}
    
  5. В этом классе экспортируйте именованный ContentTypeDefinition "hid" и объявите его базовое определение как "text".

    internal static class FileAndContentTypeDefinitions
    {
        [Export]
        [Name("hid")]
        [BaseDefinition("text")]
        internal static ContentTypeDefinition hidingContentTypeDefinition;
    }
    
  • Чтобы сопоставить этот тип контента с расширением имени файла, экспортируйте FileExtensionToContentTypeDefinitionрасширение HID и тип контента "hid".

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

Добавление типа контента в экспорт редактора

  1. Создайте расширение редактора. Например, можно использовать расширение глифа поля, описанное в пошаговом руководстве. Создание глифа поля.

  2. Добавьте класс, определенный в этой процедуре.

  3. При экспорте класса расширения добавьте ContentTypeAttribute в него тип "hid".

    [Export]
    [ContentType("hid")]