2010-08-22 3 views
2

Я написал шаблон простого T4 (назовите его «web.tt) для создания файла web.config Вот суть его:.доступ T4 программный

<#@ template debug="true" language="C#" hostSpecific="true" #> 
<#@ output extension=".config" #> 
<?xml version="1.0" encoding="UTF-8"?> 

<configuration> 
    <!-- yadda yadda yadda --> 
</configuration> 

Могу ли я получить доступ этого шаблона программно ? из класса T4 Toolbox Generator мне нужно что-то вроде:

<#@ include file="web.tt" #> 
<#+ 
// <copyright file="Generator1.tt" company="Microsoft"> 
// Copyright © Microsoft. All Rights Reserved. 
// </copyright> 

public class Generator1 : Generator 
{ 
    protected override void RunCore() 
    { 
     string[] environmentNames = new string[] { "env1", "env2", "env3" }; 
     foreach (string environmentName in environmentNames) 
     { 
      Template webTemplate = // programmatically fetch template in defined in web.tt above. 
      webTemplate.EnvironmentName = environmentName; 
      webTemplate.RenderToFile(environmentName); 
     } 
    } 
} 
#> 

можете ли вы мне точку в правильном направлении :)

ответ

1

В следующей статье показано, как сделать именно это для хранимой процедуры T-SQL.

http://www.olegsych.com/2008/09/t4-tutorial-creating-reusable-code-generation-templates/

Другими словами, вы бы определить класс шаблона в вашем web.tt и создать новый экземпляр этого в RunCore вашего генератора.

Надеется, что это помогает,

Олег

+0

Привет, Олег. Я уже читал ваше сообщение в блоге и многие другие, которые вы написали на T4. Ты мужчина! Итак, единственный подход заключается в том, чтобы встроить содержимое моего шаблона в метод TransformText() класса, который происходит из шаблона? – urig

1

Шаблоны имеют метод TransformText(), который вы можете позвонить в programatical? создадим файл.

Template webTemplate = // programmatically fetch template in defined in web.tt above. 
webTemplate.EnvironmentName = environmentName; 
string output = webTemplate.TransformText(); 
+0

Я считаю, что переопределение моего шаблона как класс и наиважнейшей TransformText(), чтобы содержать полное содержание моего шаблона немного громоздкое. Разве нет способа, которым я могу написать «простой» шаблон и получить к нему доступ по имени или типу из другого шаблона? – urig

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