2010-09-03 7 views

ответ

7

Да, вы можете. Вот как я это делаю:

string templateText = File.ReadAllText(Host.ResolvePath(templateFileName)); 
Engine engine = new Engine(); 
string output = engine.ProcessTemplate(templateText, Host); 
//this is optional - record all output to your file of choice: 
File.WriteAllText(outputFilePath, output); 
+0

делает это полагается на T4 Toolbox? – Maslow

+0

@Maslow нет, для этого не требуется сторонняя сторона ... – veljkoz

+1

Для справок: Добавить ссылку на Microsoft.VisualStudio.TextTemplating.Interfaces.11.0 и добавить <# @ assembly name = "Microsoft.VisualStudio.TextTemplating. Interfaces.11.0 "#> и <# @ import namespace =" Microsoft.VisualStudio.TextTemplating "#> в файл T4. – LosManos

1

Мы делаем это много. Вот пример того, как мы повторно использовать общий шаблон T4 еще «параметры прохода» в него:

<# 
var currentUsername = "billclinton"; // this is for integration tests impersonating a user in our case 
#> 
<#@ include file="..\SomeTemplateThatIWantToReuseHere.tt" #> 

И мы продолжаем наш шаблон Т4 «родовой» путем динамического определения местоположения, что шаблон T4 фактически бежал в (в в этом случае, шаблон T4, который имеет include линии в нем):

string namespaceName = code.VsNamespaceSuggestion(); 
var namespaceParts = namespaceName.Split('.'); 
var currentNamespaceLeg = namespaceParts.Last(); 

Это позволяет нам сделать некоторые очень мощный шаблонов без необходимости дублировать наши шаблоны. Единственное, что «дублируется», это наши 4-строчные файлы .tt, в которых есть вызов include, но они практически не требуют обслуживания, кроме любой «конфигурации», которую мы хотим выполнить, передавая переменные так, как мы это делаем.

2

Что вы, вероятно, ищете http://t4toolbox.codeplex.com/ t4 Toolbox. Это позволит вам генерировать код в отдельных файлах и автоматически добавлять их в проект.

Очень рекомендуется.

Я использовал t4 toolbox для создания целых проектов только на основе модели.

Смежные вопросы