Подтвердить что ты не робот

Как вы показываете код (не выводимый), который генерирует .Net T4?

У нас есть набор шаблонов T4, которые мы только что переместили в VS 2010, и они компилируются, но больше не работают.

Чтобы увидеть, что на самом деле происходит под капотом, было бы полезно увидеть временные файлы cs, которые генерирует T4, чтобы произвести фактическое преобразование T4.

4b9b3361

Ответ 1

Поскольку вы используете Visual Studio 2010, вы также можете временно изменить настраиваемый инструмент на шаблоне с TextTemplatingFileGenerator на TextTemplatingFilePreprocessor.

Это приведет к выделению базового кода непосредственно в ваш проект вместо обычного вывода шаблона.

Ответ 2

Если вы установили

<#@ template  debug="true"#>

тогда сгенерированный код останется в вашем временном каталоге. В моей системе Windows 7 это C:\Users\John Saunders\AppData\Local\Temp.

Ответ 3

Я не знаю, как делать именно то, что вы хотите, однако я знаю, как пройти через код t4 в visual studio. Вам нужно запустить второй экземпляр визуальной студии и прикрепить его к первому экземпляру, используя Debug- > Attach to process... (Прикрепляя его к себе, странно, я знаю). Это позволяет вам установить точки останова в файле T4 во втором экземпляре, и он остановится и позволит вам пройти через него и посмотреть, что происходит.

Edit:

Вам нужно сделать преобразование t4 в visual studio вместо инструмента командной строки, чтобы это работало. Поместите ваш .tt файл в свой проект и установите для параметра "Пользовательский инструмент" в своих свойствах значение "TextTemplatingFileGenerator". Он будет генерировать файлы каждый раз, когда вы укажете файл на сохранение, или когда вы щелкните правой кнопкой мыши и произнесите "Запустить пользовательский инструмент" в файле. Для получения дополнительной информации см. эту статью MSDN.

Я также рекомендую получить материальный редактор T4 бесплатная версия добавляет подсветку кода и intellisense примерно в 90% случаев использования, которые мне нужны для этого (он добавляет его только для функций в Core.dll для платформы .NET). платная версия добавит intellisense ко всем прикрепленным сборкам.

Edit2: Если вы действительно хотите использовать временные файлы cs, вы можете увидеть, какие файлы cs из временной папки загружены в отладчик (я точно не помню, где именно).