【问题标题】:T4 runtime template deploymentT4 运行时模板部署
【发布时间】:2012-08-14 16:38:42
【问题描述】:

我正在使用这种新的(对我而言)技术,即 T4 模板。 简单地说,我需要实现的是一种生成电子邮件文本的方法,让用户自定义邮件中的文本,但有一些“占位符”可以在运行时替代。 在我看来,这听起来 T4 运行时模板应该是一个不错的选择。 事实上,它就像一个魅力,除了我不明白如何部署解决方案的事实。 我想将我的 .tt 文件作为外部文件部署在生产服务器上(这意味着不嵌入在 dll 文件中),以便能够简单地用记事本打开该文件,更改电子邮件的文本,然后让系统开始使用新模板。

我尝试将 tt 文件的 build action 属性设置为 Content 并将 Copy to output 属性设置为 Copy always:第一个只是什么都不做据我所知有用;第二个复制 .tt 和 bin 文件夹中的基础 .cs 文件。

有没有一种干净的方法来实现这样的部署? .tt 文件的编辑是否会启动应用程序的重新启动,例如当您更改 web.config 或类似文件时?

【问题讨论】:

  • 这听起来不像 TT 的意思。为什么常规设置邮件正文不起作用?
  • 没有?我认为 TT 既适用于编译时模板,又适用于运行时模板……如果在没有完全重新部署的情况下无法更改模板中的文本,我可以使用运行时模板做什么?也许我错过了什么......
  • 虽然可以将 T4​​ 用于运行时(一些示例 stackoverflow.com/q/2307567/16391),但听起来您正在使用过于复杂的解决方案来解决更简单的问题。
  • 简单问题 = 在电子邮件中使用用户指定的文本。简单的解决方案 = 将电子邮件正文属性设置为他们指定的文本。无需在运行时编译任何代码即可完成此操作。
  • 我没有编译任何代码。模板是文本模板,而不是代码模板。它包含类似Dear <# User #>, we write you for this reason, bla bla bla 的内容。所以这里没有要编译的代码:只是文本模板解决方案。

标签: asp.net .net templates t4


【解决方案1】:

这不是 T4 支持的方案。

如果您的方案允许“固定”模板,但数据可变,那么运行时 T4 模板是一个很好的解决方案。但是,T4 的实际模板生产部分仅被许可在 Visual Studio 获得许可的情况下使用,而且既未经过测试也不支持在服务器或任何多线程环境中运行。

还有一大堆其他模板库在更广泛的场景中进行了测试,这些场景可能更适合这个特定的应用程序。例如,Microsoft 有Razor,如果您实际生成 HTML 格式的电子邮件,它可能会特别好用,因为它专门针对尖括号场景,并且非常适用于服务器,因为它是设计运行的地方。

【讨论】:

    猜你喜欢
    • 2011-04-07
    • 2011-05-23
    • 2011-04-26
    • 2013-12-22
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2011-09-05
    • 2010-12-11
    相关资源
    最近更新 更多