c# - Visual Studio T4 与 CodeSmith

标签 c# visual-studio t4 codesmith generative-programming

过去 2 年我一直在使用 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 会同样强大......但在那之前......

资源:

关于c# - Visual Studio T4 与 CodeSmith,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2538746/

相关文章:

c# - 告诉窗口从 C# 中的线程关闭

c# - 如何在动态调用链接按钮 onclick 函数时传递命令参数? (C#)

c# - 生成 obj 文件夹的目的是什么?

visual-studio - VisualSVN - 禁用自动结账

asp.net-mvc - 如何从 Views 文件夹中获取 Asp.net MVC 添加 View 对话框?

c# - 依赖注入(inject)接线问题

c# - 使用 MVVM 的动态 View 动画

visual-studio - 基址随机化的目的

c# - 在 Visual Studio Code 中执行 T4 文本模板

f# - 生成F#代码