Кто-нибудь знает, если это возможно, чтобы запустить T4 файл шаблона из другого шаблона T4, в VS2010Запуск шаблонов T4 из другого шаблона T4
Thank
Кто-нибудь знает, если это возможно, чтобы запустить T4 файл шаблона из другого шаблона T4, в VS2010Запуск шаблонов T4 из другого шаблона T4
Thank
Да, вы можете. Вот как я это делаю:
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);
Есть несколько optons с различными компромиссами:
Мы делаем это много. Вот пример того, как мы повторно использовать общий шаблон 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
, но они практически не требуют обслуживания, кроме любой «конфигурации», которую мы хотим выполнить, передавая переменные так, как мы это делаем.
Что вы, вероятно, ищете http://t4toolbox.codeplex.com/ t4 Toolbox. Это позволит вам генерировать код в отдельных файлах и автоматически добавлять их в проект.
Очень рекомендуется.
Я использовал t4 toolbox для создания целых проектов только на основе модели.
делает это полагается на T4 Toolbox? – Maslow
@Maslow нет, для этого не требуется сторонняя сторона ... – veljkoz
Для справок: Добавить ссылку на Microsoft.VisualStudio.TextTemplating.Interfaces.11.0 и добавить <# @ assembly name = "Microsoft.VisualStudio.TextTemplating. Interfaces.11.0 "#> и <# @ import namespace =" Microsoft.VisualStudio.TextTemplating "#> в файл T4. – LosManos