在过去的两年中,我一直在使用CodeSmith,并且喜欢它为我所做的事情。但是,我还了解Visual Studio内置的T4,它也可以做一些非常酷的事情。根据在VS2010中与 friend T4的交谈,T4将会变得更好。

所以问题是:我是否继续乘坐CodeSmith总线,还是该将所有模板都转换为T4了?

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

最佳答案

我对T4感到非常兴奋和兴奋,并试图将我的所有CodeSmith内容都转换为T4-只是了解到T4有很多错误或缺少。

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

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

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

    从在VS2010中使用T4进行实验之后,我不确定其中有多少已得到修复,真的....似乎很多。还有一些其他有趣的概念(preprocessed templates,据说是support for parameters等),但是大多数基本缺陷似乎仍然存在。

    所以,现在:不要扔掉CodeSmith!也许VS2016中的T4会同样强大....但是直到那时.....

    资源:
  • Oleg Sych's site,其中包含许多教程,文章和代码
  • Oleg Sych的
  • T4Toolbox
  • Clarius Consulting的Visual T4Editor
  • Tangible T4Editor(具有VS2010支持)
  • 关于c# - Visual Studio T4与CodeSmith,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2538746/

    10-13 03:23