【发布时间】: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的内容。所以这里没有要编译的代码:只是文本模板解决方案。