Как добавить зависимость к произвольному файлу в шаблон T4? - PullRequest
8 голосов
/ 11 ноября 2008

У меня есть шаблон T4, который генерирует классы из XML-файла.

Как добавить зависимость между файлом xml и файлом шаблона, чтобы при изменении файла xml шаблон автоматически запускался повторно без выбора «Запустить пользовательский инструмент» из контекстного меню?

Ответы [ 4 ]

4 голосов
/ 29 декабря 2008

Я не верю, что T4 поддерживает автоматическое преобразование шаблона на основе внешней зависимости. Я согласен с Марком - если у вас есть только один внешний файл, вы можете создать собственный «пользовательский инструмент» для вашего XML-файла или просто использовать ttxgen . Однако я не думаю, что этот подход масштабируется до сценария, в котором шаблон t4 зависит более чем от одного файла. Вам может понадобиться создать пакет Visual Studio для этого.

3 голосов
/ 11 ноября 2008

Сколько времени занимает выполнение инструмента? Один из ленивых вариантов может быть просто отредактировать csproj так, чтобы он всегда запускал инструмент во время сборки (предположительно, через <Exec ... /> или пользовательский файл targets) - конечно, это зависит от того, как быстро выполнить.

Другим способом было бы написать шим, который работает как «Пользовательский инструмент» в VS и просто вызывает существующий exe (или любой другой) с правильными аргументами. Не тривиально, но выполнимо ( см. Здесь ) - я полагаю, что тогда, якобы, это довольно неплохо играет с обнаружением изменений. Это на самом деле в моем списке вещей, которые нужно сделать для текущего проекта, так что я скоро узнаю ...

1 голос
/ 05 июня 2013

Вы можете использовать AutoTT Расширение Visual Studio.

Это расширение позволяет настраивать триггеры, которые будут запускать шаблон T4.

Одним из возможных триггеров является изменение файла. В примере файла конфигурации на странице AutoTT регулярное выражение для триггеров соответствует всем файлам в указанных папках (Контроллеры, Содержимое), но вы можете изменить его так, чтобы оно работало только с конкретным файлом.

Chirpy - еще один вариант для этого. А также T4 Regenerator , который делает это по-другому.

0 голосов
/ 11 ноября 2008

Вы пытались использовать <# @ xsd </a>?

...