【问题标题】:For what purposes have YOU used T4?您使用 T4 的目的是什么?
【发布时间】:2011-01-03 23:37:30
【问题描述】:

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

注意:我知道这是一个以讨论为导向的问题,但答案可能对其他人有所帮助。我已将其标记为主观的并标记为“社区 wiki”,因此请允许该问题保持开放。谢谢!

【问题讨论】:

  • 哈哈,Phil Haack 的网站正在显示 [ASP.NET] 死亡的黄屏。

标签: visual-studio code-generation t4


【解决方案1】:

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

【讨论】:

  • 很好,你有那个 T4 模板吗?
【解决方案2】:

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

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

【讨论】:

  • 链接断开,现在重定向到诈骗广告,回答不再有用
【解决方案3】:

我使用 T4 来:

  1. 生成 CRUD SQL Server 和 Oracle 脚本。
  2. 根据数据库架构生成数据访问层
  3. 层生成业务逻辑层,基于数据库架构
  4. 基于数据库架构(支架)生成 ASP.Net 网络表单,包括 HTML 和代码隐藏。

它为我的项目提供了一个良好、快速、简单、基本的起点。

最好的是我可以控制。

Here you can download an example of my templates

【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

    • 如果你真的很棒,你可以让它支持一个原本不打算支持的数据库。通过仅编辑模板文件,我获得了 SubSonic 到 PostgreSQL 的部分端口。
    【解决方案5】:

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

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

    【讨论】:

    • 我正在考虑切换我的代码以使用这些模板。有人有任何关于使用 l2st4 的推荐资源或一些鼓励的话吗?
    【解决方案6】:

    观看 Scott Hanselman 在 T4 上与 Kathleen Dollard 交谈的这个播客。
    http://www.hanselminutes.com/default.aspx?showID=170

    【讨论】:

      【解决方案7】:

      我已经使用 T4 生成:

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

      【讨论】:

        【解决方案8】:

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

        【讨论】:

          【解决方案9】:

          请参阅此处以获取来自社区的 30 多个 T4 生成器列表,这些生成器来自多个领域,包括 ASP.NET、WCF、UML、ADO.NET、.NET

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-05
            • 2010-10-20
            • 2010-12-18
            • 2021-01-31
            • 2011-10-17
            • 2015-11-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多