Visual Studio T4与CodeSmith的比较

17

我过去2年一直在使用CodeSmith,我喜欢它对我的帮助。但是我也知道Visual Studio中内置的T4也可以做一些很棒的事情。根据与朋友的交谈,VS2010中的T4将变得更好。

那么问题来了:我是继续使用CodeSmith,还是开始将所有模板转换为T4呢?

更新 也许我在提问时没有表述清楚。显然,在我的新模板可用之前,我不会删除我的cs模板并停止使用它们。但是,现在值得这么做吗?T4此时是否比CodeSmith更具有吸引力?通过为T4编写模板,是否有某些特性或功能组合能使我的效率提高100倍?


回答您的更新:T4与CodeSmith相比没有明显的优势,除了被包含在VS2008及以上版本中,因此对VS用户来说是“免费”的。 - marc_s
1个回答

25

我非常兴奋,想把所有的CodeSmith东西都转到T4上来,但是后来发现T4有一些问题或缺陷:

  • 不支持模板参数 - 模板中需要硬编码所有内容.....
  • T4的Visual Studio宿主程序相当有限
  • 没有直接和易于使用地支持从单个模板生成多个输出文件

看看Kathleen Dollard的“What Wrong with T4”博客文章吧 - 她基本上是.NET代码生成之后的女王,她很好地总结了这些问题 - 我完全100%同意她的观点。

总之,在大量地尝试和研究之后,我基本上放弃了T4 - 它目前还没有准备好发布正式版本,至少对于我所处理的类型的模板(主要是检查数据库表以提取值,例如作为手工ORM的基础,或从数据库中提取常量和配置设置等)而言如此。

从在VS2010中实验T4的经验来看,我不确定有多少问题已经被修复了......似乎没有太多。有几个其他有趣的概念(预处理的模板,据说支持参数等),但大多数基本缺陷仍然存在。

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

资源:


T4其实就是.NET,你可以在T4中做任何你在.NET中能做的事情。它并没有你抱怨的那些限制,只是可能没有你想象中的那么简单罢了。Codesmith希望比T4更好,否则他们就会破产。 - Michael Maddox
“只是发现 T4 存在很多问题和缺陷。” - 你对 T4 仍然有同样的感觉吗?如果我需要一些模板、代码片段和某些任务自动化来完成我正在接手的项目,我应该选择哪一个呢?有什么建议吗?谢谢。 - VoodooChild
3
5年的滞后。 CodeSmith和T4之间的战斗有什么新动态? - Evgeni Nabokov
@EvgeniNabokov,我们仍然依赖第三方解决方案来获得任何类型的“IDE体验”,即使语法高亮也不包含在Visual Studio中。 - user247702
我回到了这个话题(曾经使用过Codesmith,现在正在使用T4,并且现在正在查看与T4有限支持的ASP.NET 5和相关库),我已经看到了这个:http://www.bricelam.net/2015/03/12/t4-on-aspnet5.html(但尚未使用),并且感觉需要一个很好的模板工具,最好是dnx /跨平台)。 - Mark Redman
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接