12

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

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

插入.sql

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

即 <# SaveTemplateAs("Insert" + TableName); #>

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

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

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

谢谢

4

2 回答 2

23

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

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

该节点<LastGenOutput>控制输出文件名。您可以在此处选择所需的文件名。

于 2014-09-03T14:27:51.660 回答
3

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

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

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

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

于 2013-01-31T07:57:51.217 回答