В документации объясняется:
Стандартные управляющие блоки
Стандартный управляющий блок - это участок программного кода, который генерирует часть выходного файла.
Вы можете смешивать любое количество текстовых блоков и стандартных управляющих блоков в файле шаблона. Однако вы не можете поместить один управляющий блок внутри другого. Каждый стандартный управляющий блок разграничивается символами
<# ... #>
....
Управляющие блоки функций класса
Управляющий блок функций класса определяет свойства, методы или любой другой код, который не должен включаться в основное преобразование. Блоки функций класса часто используются для вспомогательных функций. Обычно блоки функций класса размещаются в отдельных файлах, чтобы их можно было включить в несколько текстовых шаблонов.
Блоки функций класса разграничиваются символами
<#+ ... #>
Например, следующий файл шаблона объявляет и использует метод:
<#@ output extension=".txt" #>. Квадраты: <# for(int i = 0; i < 4; i++) { #> Квадрат <#= i #> равен <#= Square(i+1) #>. <# } #> Это конец списка. <#+ // Начало блока функций класса private int Square(int i) { return i*i; } #>
Блок управления функциями класса - это блок, в котором можно определить вспомогательные методы. Блок разграничивается <#+...#>
и должен быть последним блоком в файле. Ref