以编程方式访问T4模板

时间:2010-08-22 15:42:31

标签: t4

我写了一个简单的T4模板(称之为“web.tt”)来生成一个web.config文件。这是它的要点:

<#@ 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);
        }
    }
}
#>
你能指出我正确的方向吗? :)

2 个答案:

答案 0 :(得分:1)

模板具有TransformText()方法,您可以调用该方法以编程方式生成文件。

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

答案 1 :(得分:1)

以下文章介绍了如何为T-SQL存储过程完全执行此操作。

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

换句话说,您将在web.tt中定义一个Template类,并在其中创建一个新的实例 你的发电机的RunCore。

希望这有帮助,

奥列格