如何不输出默认的T4生成文件?

32

我正在使用T4toolbox生成一堆文件,假设我的t4文件名为x.t4,默认情况下它会生成一个名为x.txt的无内容文件,我能告诉t4引擎不要这么做吗?

我正在使用T4toolbox生成一堆文件,假设我的t4文件名为x.t4,默认情况下它会生成一个名为x.txt的无内容文件,我能告诉t4引擎不要这么做吗?

您只是说了不应该发生什么,而没有说应该发生什么。期望的输出是什么? - Sander Rijken
我的期望输出不是默认输出。假设我的 x.t4 默认生成 f1.cs、f2.cs 和 x.txt,现在我只想输出 f1.cs 和 f2.cs,因为 x.txt 为空,没有任何价值。但我不知道如何摆脱 x.txt。 - Fred Yang
3个回答

41
发现了一个技巧/黑客!
<#@ output extension="/" #>

或者

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

Visual Studio不会输出默认文件,也不会过多抱怨其无能力。
如果您想避免警告,还可以通过扩展修改输出路径:
<#@ output extension="xml/../_" #>

文件仍将在Visual Studio项目层次结构中创建并附加到T4文件中,但您可以将其放入任何目录中。
P.S. 我已经尝试过使用T4MultiFile NuGet包,但我认为它也适用于T4Toolbox。

1
不错。不幸的是,您仍会收到有关输出文件名无效的警告。 - Oleg Sych
@OlegSych 至少这不是一个错误。:) 像 "xml/../1.txt" 甚至 "xml/../../../1.txt" 这样的 "扩展名" 也可以工作;文件被创建了,但它可以放置在项目的任何位置(它仍然与解决方案资源管理器中的 TT 文件 "附加")。 - Athari
这个不起作用。它确实删除了文件,但也阻止了基于模板重新生成文件的过程。 - hvk
@hvk Visual Studio 版本,操作系统版本,项目类型? - Athari
@Discord,我在Win 10上使用VS2015,在几个项目中尝试过,如类库和WCF项目。已安装T4 Toolbox。 - hvk
1
当我在 .net 项目(例如类库)中生成文件时,这对我很有效。不幸的是,在 SQL 项目(sqlproj)中使用此 hack 会导致 Visual Studio 崩溃 :( - Yodan Tauber

18
在解决方案资源管理器中右键单击 x.t4,然后单击“属性”。在 Custom Tool 旁边将显示“TextTemplatingFileGenerator”。删除此内容。现在,x.t4 将成为项目的一部分,但不会生成任何内容。当 .t4/.tt 文件仅用作其他模板中的包含文件时,这非常有用。

14
不应将其标记为答案。问题是如何忽略输出为空的文件,而不是完全避免运行T4。您可能需要运行T4来生成一组单独的文件(即使用MultipleOutputHelper.ttinclude),但您不希望生成此空文件。Athari提供了正确的答案。 - YMC
2
我为每个具有特定属性的枚举、类和接口创建一个文件,以将 .net 定义转换为 TypeScript 文件。它可能会创建数百个文件。我不想要默认输出文件。这就是为什么这不是答案的原因。 - Brain2000

7

不是的。这个文件是由Visual Studio创建的,而不是T4。你能做的最好的事情就是在其中生成一些有用的东西,比如实际的代码或者可能是代码生成运行的日志。


1
谢谢。这也是我的观察,但T4MVC是如何实现的? 运行T4MVC.tt似乎不会生成T4MVC.*文件。 - Emmett
@Oleg Sych MSFT,我在这里提出了一个相关的问题:http://stackoverflow.com/questions/13838142/put-all-methods-in-one-tt-file-and-use-it-in-another-t4-files-in-codetemplates 请您帮忙查看一下。 - Saeid

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