【问题标题】:t4 templates per template TransformOnBuild setting每个模板 TransformOnBuild 设置的 t4 个模板
【发布时间】:2012-01-23 19:41:38
【问题描述】:

我想在构建项目时自动执行其中一个 .tt 文件,而不是其他文件。是否可以在特定的 .tt 文件而不是项目范围内设置 TransformOnBuild 属性?或者另一种方法来实现这一点?

【问题讨论】:

    标签: visual-studio-2010 code-generation t4


    【解决方案1】:

    作为完成此任务的另一种方法来回答。

    1. 您可以将 .tt 更改为 TextTemplatingFilePreprocessor (这里描述得更好: http://www.olegsych.com/2009/09/t4-preprocessed-text-templates/)。
    2. 创建在预构建事件上执行预处理器的小型命令行工具。

    第一个链接包含这个例子,但它描述了预处理类的使用: http://blogs.clariusconsulting.net/pga/vs10-beta-1-t4-preprocessing-part-2/

    【讨论】:

    • 如果有人需要运行更高级的场景,预处理模板会发挥作用,但是 OPs 解决方法是实现常见所需功能的更简单方法。
    • 这是一个很好的例子,说明为什么答案应该是自包含的,而不是依赖于(死)链接。
    【解决方案2】:

    我决定添加一个自定义预构建步骤来生成所需的 .tt 文件:

    <Exec Command="&quot;%PROGRAMFILES(x86)%\Common Files\microsoft shared\TextTemplating\10.0\TextTransform.exe&quot; template.tt -out template.cs" />
    

    这种方法还允许我使用 -a; 轻松地将参数(在项目文件中定义)传递给模板;我面临的另一个问题。

    【讨论】:

    • +1 用于解决方法;我完全忘记了 TextTemplating。如果您需要分发 TextTransform.exe(或其他组件)以支持没有 VS 的构建环境,您可能需要查看 MonoDevelop;它提供 MIT/开源许可的兼容 T4 实现。
    • 是的,这是我让它工作的唯一方法......谢谢!
    猜你喜欢
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多