Пошаговое руководство. Связывание типа контента с расширением имени файла
Вы можете определить собственный тип контента и связать расширение имени файла с ним с помощью расширений Managed Extensibility Framework (MEF). В некоторых случаях расширение имени файла уже определено языковой службой. Но, чтобы использовать его с MEF, необходимо по-прежнему связать его с типом контента.
Создание проекта MEF
Создайте проект VSIX на C#. (В Диалоговое окно "Новый проект" , выберите Visual C# / Расширяемость, а затем ПРОЕКТ VSIX.) Назовите решение
ContentTypeTest
.В файле source.extension.vsixmanifest перейдите на вкладку "Активы" и задайте для поля Type значение Microsoft.VisualStudio.MefComponent, поле "Источник" в проекте в текущем решении и поле "Проект" в качестве имени проекта.
Определение типа контента
Добавьте файл класса с именем
FileAndContentTypes
.Добавьте ссылки на следующие сборки:
System.ComponentModel.Composition
Microsoft.VisualStudio.Text.Logic
Microsoft.VisualStudio.CoreUtility
Добавьте следующие
using
директивы.using System.ComponentModel.Composition; using Microsoft.VisualStudio.Text.Classification; using Microsoft.VisualStudio.Utilities;
Объявите статический класс, содержащий определения.
internal static class FileAndContentTypeDefinitions {. . .}
В этом классе экспортируйте именованный 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; }
Добавление типа контента в экспорт редактора
Создайте расширение редактора. Например, можно использовать расширение глифа поля, описанное в пошаговом руководстве. Создание глифа поля.
Добавьте класс, определенный в этой процедуре.
При экспорте класса расширения добавьте ContentTypeAttribute в него тип "hid".
[Export] [ContentType("hid")]