Как указать, должен ли файл T4 производить какие-либо выходные данные

Я использую T4 для создания некоторых классов DTO + картографов.

Я разделяю файлы на несколько повторно используемых битов (некоторые из которых содержат общие методы, некоторые другие общие процедуры) и включаю их в шаблоны T4, которые будут производить мой вывод - и это все хорошо.

Моя проблема заключается в том, что повторно используемые файлы .tt будут пытаться создавать свои собственные выходные данные и терпят неудачу (потому что они связаны с некоторыми другими файлами .tt) каждый раз, когда я вношу в них изменения, что просто отстой.

Я почти уверен, что где-то видел какую-то директиву, указывающую, что данный файл не должен пытаться производить какой-либо вывод, но я не могу отследить его.

Любая помощь приветствуется!


person JohnIdol    schedule 14.02.2010    source источник


Ответы (4)


В свойствах (выберите файл и нажмите F4) файлов T4, для которых вы хотите подавить вывод, снимите флажок «Пользовательский инструмент».

person Adam Ralph    schedule 14.02.2010
comment
это звучит именно то, что мне нужно - есть ли способ сделать это из разметки? - person JohnIdol; 15.02.2010
comment
@JohnIdol - я не верю, что есть способ подавить вывод в разметке самого файла T4. Как говорит Прит, настройка управляется наличием элемента ‹Generator›TextTemplatingFileGenerator‹/Generator› в файле проекта, поэтому вы можете удалить его в качестве альтернативы очистке свойства через графический интерфейс VS. - person Adam Ralph; 15.02.2010

Вы можете указать недопустимое расширение, чтобы подавить вывод вашего шаблона, например:

<#@ output extension="\n" #>
person Stanislav Kniazev    schedule 16.02.2010
comment
+1. Это прекрасно и ужасно! Он отлично подходит для наших целей. Мы перенаправляем вывод нашего файла TT в другое место, и нам нужно подавить обычный вывод. - person RB.; 16.06.2011

У меня недостаточно «уличного кредита StackOverflow», чтобы ответить на ответ Станислава Князева, поэтому мне придется опубликовать здесь свой собственный. Спасибо за наводку Станислав Князев.

Следующее работало; но если вы используете подсветку синтаксиса T4 (например, Tangible T4), вы обнаружите, что она забивает подсветку.

‹#@выходное расширение="\n" #>

Итак, я нашел установку расширения на что-то, что не является escape-символом, например:

‹#@ выходное расширение="" #>

а затем в разделе кода программно установить расширение файла, например:

Host.SetFileExtension("\n");

Подсветка T4 затем восстанавливается.

person xx1xx    schedule 01.11.2012

переименуйте их в .ttinclude и посмотрите, как это у вас получится....

person Sky Sanders    schedule 14.02.2010
comment
Если файл уже был добавлен как файл T4, «Пользовательский инструмент» все равно будет определен. Изменение расширения с «tt» на «ttinclude» не очистит это свойство. - person Chris Miller; 20.08.2012