17

在过去的 2 年里,我一直在使用 CodeSmith,并且喜欢它为我所做的一切。但是,我也知道 Visual Studio 中内置的 T4,它也可以做一些很酷的事情。VS2010 T4 基于与朋友的对话 T4 会更好。

所以问题是:我是继续乘坐 CodeSmith 巴士,还是该开始将我所有的模板转换为 T4 了?

更新 也许我问这个问题的方式不清楚。显然,在新模板正常工作之前,我不会删除我的 cs 模板并停止使用它们。但是,在这一点上是否值得付出努力?在这一点上,T4 是否比 CodeSmith 提供了一个完整的优势?是否有一些功能或一组功能可以通过为 T4 编写模板来代替我的效率提高 100 倍?

4

1 回答 1

24

我对 T4 感到非常激动和兴奋,并试图将我所有的 CodeSmith 东西都转换为 T4 - 只是发现 T4 有很多问题/缺少的东西。

  • 不支持模板的参数 - 您需要将所有内容硬编码到模板中.....
  • T4 的 Visual Studio 主机相当有限
  • 没有对来自单个模板的多个输出文件的直接和简单的支持

查看 Kathleen Dollard 的T4 有什么问题博客文章——她几乎是 .NET 上的代码生成女王,她总结得非常好——我完全同意 100% 的问题。

总而言之,经过大量的尝试和尝试,我基本上放弃了 T4 - 它还没有准备好迎接黄金时段,至少对于我正在使用的模板类型(主要是检查数据库表以提取值,例如作为自制 ORM 的基础,或从数据库中提取常量和配置设置等)

在 VS2010 中使用 T4 进行实验后,我不确定其中修复了多少,真的.... 似乎不是很多。还有一些其他有趣的概念(预处理模板,据说支持参数等),但大多数基本缺陷似乎仍然存在.....

所以现在:暂时不要扔掉 CodeSmith!也许 VS2016 中的 T4 会同样强大......但在那之前......

资源:

于 2010-03-29T14:51:49.160 回答