Неправильный отступ с шаблонами t4

В настоящее время я работаю с шаблонами T4, и я заметил, что иногда код не имеет отступов должным образом, как я могу избежать этого?

Например, у меня есть этот код в шаблоне

}
    <# } #>
    this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

а в сгенерированном классе он похож на

}
                 this.cmbDecisionList.Dat = dataSource;
      this.btnDec.Enabled = dataSource.Count > 0;
}

Ответы

Ответ 1

Позвольте мне проиллюстрировать вашу проблему, заменив пробелы точками.

}
....<# } #>
....this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

а в сгенерированном классе он похож на

}
........this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

Теперь удалим предыдущие точки.

}
<# } #>
....this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

а в сгенерированном классе он похож на

}
....this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

Ответ 2

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

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

Generated code
<#
    T4 statements
#>
Generated code

IE # > всегда появляется после новой строки, и новая строка добавляется сразу после.

Затем ваш код будет изменен на:

}
<# 
    } 
#>
    this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

Таким образом, сгенерированный код имеет тенденцию форматироваться по назначению.

Вероятно, это не единственный способ сохранить форматирование по назначению, а тот, который я использую.

Надеюсь, что это поможет.