Запуск шаблона T4 с использованием C#
У меня есть шаблон T4 (mycode.tt), который создает файл CS. Я обычно щелкаю правой кнопкой мыши файл tt и выбираю RunCustomTool, который внутренне берет файл xml и генерирует код для меня. Теперь я хочу запустить пользовательский инструмент с помощью приложения aC# windows. Итак, нажав кнопку, я хочу запустить Custom Tool. Можно ли запустить CustomTool из C#.
Редактировать:
У меня есть 2 tt-файла, и у одного из них нет кода cs. Но к другому прикреплен файл.cs, и я вызываю метод TransformText() второго файла из первого файла.tt. Поэтому мне нужно вызвать первый файл. Так что я не могу использовать метод TransformText(). Есть ли способ динамического вызова файла textTemplate?
2 ответа
Я бы порекомендовал предварительно обработанный маршрут, как ответил выше @jb_.
В качестве альтернативы, если вам нужно, чтобы ваши шаблоны по-прежнему можно было редактировать без шага компиляции для использования с вашим пользовательским приложением C#, и приложение будет развертываться только на компьютерах вместе с Visual Studio, вы можете написать собственный хост.
Вы можете легко достичь этого, используя VS2010. Если вы добавляете новый файл в проект, выберите предварительно обработанный текстовый файл шаблона. Вы можете редактировать шаблон как обычно. Вместо того, чтобы генерировать вывод напрямую, файл генерирует код, который генерируется нормально. Я знаю, это звучит странно. Но то, что вы видите в своем выходном файле, - это код, сгенерированный набором текстовых шаблонов, чтобы получить ваш вывод (более или менее).
Это краткий пример предварительно обработанного текстового шаблона с именем "TestTemplate.tt" и его использования в коде:
Tt-файл:
<#@ template language="C#" #> Some output.
Код:
using System; using System.Diagnostics; namespace Test { class Program { static void Main(string[] args) { TestTemplate testTemplate = new TestTemplate(); Debug.Print(testTemplate.TransformText()); } } }