【问题标题】:Control the filename generated by a T4 template?控制 T4 模板生成的文件名?
【发布时间】:2014-09-03 22:51:02
【问题描述】:

如何指示 T4 模板生成具有给定文件名的结果文件?

我会尽量说得更清楚。假设我有一个名为 Insert.tt 的模板,它生成将记录插入表的代码。它的输出扩展名为“sql”,因此它创建了一个名为:

插入.sql

没关系,但我希望文件名能够反映我正在尝试做的任何事情。假设我正在为其生成插入的表的名称存储在 中。我想将它传递给模板生成器并让它使用它来保存结果文件。

假设我为表用户、地址和电话生成插入语句。

我希望将生成的文件命名为 InsertUser.sql、InsertAddress.sql 和 InsertPhone.sql。

我很确定可以做到这一点,因为我已经看到一些自定义扩展可以从单个模板生成多个文件,但我不理解实现这一点的简单(不是矫枉过正)的方法。

谢谢

【问题讨论】:

    标签: t4


    【解决方案1】:

    不幸的是,.tt 文件本身似乎不可能。但是您可以在文本模板所在项目的.csproj 文件中控制输出文件名。从 Visual Studio 解决方案中卸载项目并打开项目文件,例如.csproj 直接在文本编辑器中。

    在那里你可以找到模板文件的参考。

    节点<LastGenOutput> 控制输出文件名。在这里你可以选择你想要的文件名。

    【讨论】:

    • 项目不需要卸载,手动编辑保存后VS会检测到它发生了变化。
    • @MonkeyPushButton 我认为在 VS 激活它的同时编辑它有点危险,这就是为什么“编辑 abc.csproj”选项只有在你先卸载项目时才可用。
    • 这不适用于我使用 VS2019 和运行时模板。重新生成时它会不断更改名称
    • 奇怪的是,VS 有时可能会将输出后缀更改为 csproj 文件中的数字(可能检测到重复或其他内容),因此这也是解决该问题的方法。
    【解决方案2】:

    据我所知,T4 中没有生成多个输出文件的内置功能。但你是对的,有很多示例可以告诉你如何处理多个输出文件。

    也许这篇博文可以帮助您解决问题:

    http://t4-editor.tangible-engineering.com/blog/how-to-generate-multiple-output-files-from-a-single-t4-template.html

    此编辑器是免费的,并附带免费示例 - 包括将 T4 输出拆分为具有不同名称和/或扩展名的不同文件的代码。

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2011-10-16
      • 2013-10-03
      • 2011-05-31
      相关资源
      最近更新 更多