如何指定T4文件是否应生成任何输出

3
我正在使用T4生成一些DTO类和映射器。我将文件拆分成多个可重用部分(其中一些包含常见方法,其他一些包含常见程序),并将它们包含到将产生我的输出的T4模板中 - 这很好。但是,我的问题是可重用的.tt文件会尝试生成自己的输出并失败(因为它们与其他.tt文件耦合),每次我对它们进行更改时都会出现这种情况,这非常糟糕。我相信我曾在某个地方看到过指令,可以指定给定文件不应尝试产生任何输出,但我似乎无法追踪回去了。感谢任何帮助!
4个回答

7
您可以指定无效的扩展名来抑制模板的输出,例如:
<#@ output extension="\n" #>

1
+1. 这真是美妙又可怕!它完美地为我们的目的服务。我们正在将TT文件的输出重定向到另一个位置,并需要抑制常规输出。 - RB.

4
在需要抑制输出的T4文件的属性中(选择文件并按F4键),清除“自定义工具”条目。

这听起来正是我所需要的 - 有没有办法从标记中实现这个? - JohnIdol
@JohnIdol - 我不相信有一种方法可以在 T4 文件本身的标记中抑制输出。正如 Preet 所说,该设置由项目文件中存在 <Generator>TextTemplatingFileGenerator</Generator> 元素来控制,因此您可以删除该元素作为通过 VS GUI 清除属性的替代方法。 - Adam Ralph

4
我没有足够的'StackOverflow街信用'来回复Stanislav Kniazev的答案,所以只能在这里发表自己的想法。感谢你的建议,Stanislav Kniazev。
以下方法可行;但是如果你正在使用T4语法高亮(如Tangible T4),你会发现它会破坏语法高亮显示。

<#@ output extension="\n" #>

因此,我将扩展名设置为某些不是转义字符的内容,像这样:

<#@ output extension="" #>

然后在代码部分以编程方式设置文件扩展名,像这样:

Host.SetFileExtension("\n");

这样,T4语法高亮就恢复了。

1

将它们重命名为.ttinclude,看看效果如何...


如果文件已经作为T4文件添加,那么“自定义工具”仍将被定义。将扩展名从“tt”更改为“ttinclude”不会清除此属性。 - Chris Miller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接