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


Обработка текстовых шаблонов с помощью пользовательского хост-класса

Процесс преобразования текстового шаблона принимает файл текстового шаблона на входе и создает текстовый файл на выходе.Можно вызывать процессор преобразования текста из расширения Visual Studio или из отдельного приложения, которые выполняется на компьютере, на котором установлена Visual Studio.Однако необходимо предоставить основное приложение преобразования текстового шаблона.Этот класс подключает шаблон к среде, находя ресурсы, такие как сборки и включаемые файлы, и работает с выводом и сообщениями об ошибках.

СоветСовет

При создании пакета или расширения, который будет выполняться в Visual Studio, можно воспользоваться службой текстовых шаблонов, а не создавать собственный узел.Дополнительные сведения см. в разделе Вызов преобразования текста в расширении VS.

ПримечаниеПримечание

Преобразования текстовых шаблонов не рекомендуется использовать в серверных приложениях.Преобразования текстовых шаблонов не рекомендуется использовать, когда выполняется более одного потока.Это объясняется тем, что модуль текстовых шаблонов многократно использует один домен приложения для преобразования, компиляции и выполнения шаблонов.Потокобезопасность преобразованного кода не предусмотрена.Модуль предназначен для серийной обработки файлов, поскольку они находятся в проекте Visual Studio во время разработки.

При работе с приложениями времени выполнения имеет смысл использовать предварительно обработанные текстовые шаблоны. См. раздел Создание текста во время выполнения с помощью текстовых шаблонов T4.

Если приложение использует набор шаблонов, фиксированных во время выполнения, проще использовать предварительно преобразованные текстовые шаблоны.Данный подход можно также использовать в случае, когда приложение будет выполняться на компьютере, где не установлена Visual Studio.Дополнительные сведения см. в разделе Создание текста во время выполнения с помощью текстовых шаблонов T4.

Выполнение текстового шаблона в приложении

Для выполнения текстового шаблона следует вызвать метод ProcessTemplate класса Microsoft.VisualStudio.TextTemplating.Engine:

using Microsoft.VisualStudio.TextTemplating;
...
Engine engine = new Engine();
string output = engine.ProcessTemplate(templateString, host);

Приложение должно найти и предоставить этот шаблон, а также принять вывод.

В параметре host задается класс, реализующий интерфейс ITextTemplatingEngineHost.Он вызывается процессором шаблонов.

Основное приложение должно быть способно протоколировать ошибки, разрешать ссылки на сборки и включаемые файлы. предоставлять домен приложения, в котором может выполняться шаблон, и вызывать подходящий процессор для каждой директивы.

Microsoft.VisualStudio.TextTemplating.Engine определяется в Microsoft.VisualStudio.TextTemplating.11.0.dll, а ITextTemplatingEngineHost определяется в Microsoft.VisualStudio.TextTemplating.Interfaces.11.0.dll.

Содержание

Ссылки

ITextTemplatingEngineHost

Связанные разделы