【问题标题】:Is T4 template run every time it is requested?每次请求时都会运行 T4 模板吗?
【发布时间】:2011-09-05 20:17:34
【问题描述】:

我正在尝试设置一个环境,让我可以使用模板向数千人发送电子邮件。在所有这一切中,性能是关键,我试图找出, myscript.tt运行时,是每次都编译执行还是有编译后的对象可以重用后续调用执行脚本?

【问题讨论】:

    标签: c# .net templates code-generation t4


    【解决方案1】:

    基本上,您在预编译的模板中调用它:

    string result = new MyTemplate().TransformText();
    

    模板及其代码(逻辑等)只创建一次,然后您调用 TransformText 来生成动态所需的输出。在您的情况下,我认为您每次调用 TransformText 时都会为您的模板提供不同的电子邮件地址。

    这篇文章将回答你的问题:

    Run-Time Text Generation with T4 Text Templates

    更多细节在这里:

    Writing Code that Writes Code

    【讨论】:

    • "在第一步中,引擎对模板进行预处理:解析处理指令、文本和代码块,生成具体的TextTransformation类,并将其编译为.NET程序集。在第二步中, T4 引擎创建 GeneratedTextTransformation 类的实例,调用其 TransformText 方法并将其返回的字符串保存到输出文件。”这是导致混乱的第二步。我确信预处理模板只会创建一次并随着时间的推移重复使用,但第二步让我有些困惑。想法?
    • 以上是您发布的 Oleg 链接的摘录。
    • @brainydexter:您在预编译的模板中调用它:字符串result = new MyTemplate().TransformText(); 模板及其代码(逻辑等)创建一次,但您随后调用 TransformText 以生成动态所需的输出.在您的情况下,我认为您每次调用 TransformText 时都会为您的模板提供不同的电子邮件地址。
    • 在此处读取构造函数中的传递参数:msdn.microsoft.com/en-us/library/ee844259.aspx
    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多