Я разбиваю код T4 в отдельных файлах для модульности и повторного использования, но я выясняю, что каждый файл стоит мне пустую строку вывода. Например:
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".ttinclude" #>
<#@ Import Namespace="System.Collections.Generic" #>
<#@ Include file="Includes.tt" #>
namespace <#= NameSpace #>
{
If Includes.tt перечисляет 3 других файла *.tt, я получаю 3 пустые строки перед пространством имен. Поскольку я добавляю код и разделяю его в отдельные файлы *.tt, это пустое пространство продолжает расти. Фактически, я упаковал все включенные файлы в один Includes.tt, надеясь, что это обойдется мне в одну пустую строку. Это не так. Я все еще получаю одну пустую строку для каждого файла, указанного в Includes.tt. Есть ли способ избежать этого?
Править: считая, что я не делаю просто тупой ошибки (и я искренне надеюсь, что я нахожусь), проблема не такая тривиальная, как может показаться с первого взгляда:
a) Повторное использование и модульность с помощью включенных T4 файлов так же стара, как и сам T4, и упоминалось в последней статье журнала MSDN: "Управление сложностью в решениях формирования кода T4".
b) Если код сгенерирован автоматически, это не значит, что он хорошо отформатирован или плохо читается.
c) В текущем решении, в моем случае, для каждого генерируемого файла .cs, читателю придется прокручивать одну пустую страницу, пока она не увидит какой-то сгенерированный текст. Все, потому что я разделил генерацию кода между несколькими включенными файлами .tt. Это просто не кажется правильным.