В примерах Олега используются два шаблона. Один содержит метод, а второй импортирует его для вызова методов.
Из справочного примера:
ProcessTemplate.tt
<#@ template language="C#" hostspecific="True" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="Microsoft.VisualStudio.TextTemplating" #>
<#+
void ProcessTemplate(string templateFileName, string outputFileName)
{
string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
string outputFilePath = Path.Combine(templateDirectory, outputFileName);
string template = File.ReadAllText(Host.ResolvePath(templateFileName));
Engine engine = new Engine();
string output = engine.ProcessTemplate(template, Host);
File.WriteAllText(outputFilePath, output);
}
#>
Этот шаблон также включает специфическую для хоста опцию для генерации свойства Host. Метод ProcessTemplate использует это свойство для определения полного пути к автономному файлу шаблона, а также к выходному каталогу. Метод ProcessTemplate создает новый экземпляр класса T4 Engine, который он использует для компиляции и запуска автономного шаблона.
Вот шаблон, который использует этот вспомогательный метод для генерации двух выходных файлов из двух автономных шаблонов. "(Текст из примера справки)
Example3.tt
<#@ include file="ProcessTemplate.tt" #>
<#
ProcessTemplate("Standalone1.tt", "StandaloneOutput1.txt");
ProcessTemplate("Standalone2.tt", "StandaloneOutput2.txt");
#>
Это первый шаблон, на который есть ссылка в примере справки. Если вы укажете полученную ошибку, это поможет при отладке.