您使用T4的目的是什么?

时间:2010-01-11 23:46:55

标签: visual-studio code-generation t4

T4已经在Visual Studio中存在了好几年,但没有得到很多关注。但是,对于那些了解它的人来说,似乎有一些非常有创意和有用的目的。

我正在研究使用T4的一些不同方式,我很高兴听到您如何将它用于现实生活场景。我主要对非标准和创造性用途感兴趣。

一些有趣的例子:

  1. Phil Haack使用T4 to create static CSS files from .less
  2. Generate WPF and Silverlight Dependency Properties using T4 Templates
  3. 注意:我意识到这是一个面向讨论的问题,但答案可能对其他人有所帮助。我已将其标记为主观且也标记为“社区维基”,因此请允许该问题保持开放。谢谢!

9 个答案:

答案 0 :(得分:8)

我不是app.config / web.config的强大粉丝,所以我使用T4读取这些文件并创建一个AppSettings / WebSettings类,它将连接字符串和键/值包装在一个真实的中类。这意味着,只要我总是使用AppSettings.SomeValue来引用我的app.config,我就会得到编译时检查,真的很好。

答案 1 :(得分:4)

我使用sharp-architecture中的T4模板生成从模型到控制器到基本视图的所有内容。

绝对值得一试,即使您只是想看一些T4模板的高级示例

答案 2 :(得分:4)

我使用T4:

  1. 生成CRUD SQL Server和Oracle脚本。
  2. 基于数据库架构生成数据访问层
  3. 图层基于数据库架构生成业务逻辑层
  4. 基于数据库架构(scafolding)生成ASP.Net webforms,包括HTML和代码隐藏。
  5. 它为我的项目提供了一个良好,快速,简单,基本的起点。

    最好的是我掌控着。

    Here you can download an example of my templates

答案 3 :(得分:2)

SubSonic 3.0大量使用T4模板来生成实体代码。

基本上它在数据库连接上调用GetSchema()并运行它通过T4实体模板找到的每个表。在这里使用T4的好处是,如果你不喜欢它处理数据库模式的方式,只需编辑模板。

我已经调整了T4来更好地处理MySQL数据库,因为我使用了许多tinyint列,默认T4映射到byte类型。对T4的快速编辑为我提供了我想要的类型,而不是我的应用程序实体。

答案 4 :(得分:2)

T4的LINQ to SQL模板
http://l2st4.codeplex.com/

为需要Visual Studio 2008的C#和VB.Net复制SQLMetal和LINQ to SQL类设计器代码生成器的功能的模板。

答案 5 :(得分:2)

通过Scott Hanselman与Kathleen Dollard谈话,在T4上看看这个播客 http://www.hanselminutes.com/default.aspx?showID=170

答案 6 :(得分:2)

我用T4生成:

  • 代理(设计时,用于注入/包装监控 code / logging / ...在一个非常具体的暴露api中。)。
  • 用于一对一接口/类映射的接口生成
  • 替换反射 代码由“直接/真实”调用代码(维护优势) 例如,反射代码,但实际代码的性能) 什么时候允许通过索引器访问属性 在那个方向。
  • java项目的xml生成(找不到 适用于Java的类似T4的解决方案,可在公司内轻松共享,T4 很简单,因为它是内置的,你可以从命令行运行它)
  • 从主数据库生成枚举(我们为delphi代码库和.Net代码库生成它们)

答案 7 :(得分:1)

T4模板在Web服务软件工厂中大量使用(Service Factory)。

答案 8 :(得分:1)

请参阅此处,查看社区中30多个T4生成器的列表,包括ASP.NET,WCF,UML,ADO.NET,.NET

http://t4-editor.tangible-engineering.com/How-Do-I-With-T4-Editor-Text-Templates.htm