Как добавить зависимость к произвольному файлу в шаблон T4?

StackOverflow https://stackoverflow.com/questions/280748

  •  07-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

scroll top