T4模板生成了不需要的输出文件。

3

我有一个名为ParentTemplate的T4模板,其中包含另一个名为ChildTemplate的T4模板。我的想法是每次调用ChildTemplate时都会调用我的ParentTemplate并生成一个文件。然而,我的ParentTemplate还创建了一个我不需要的文件(.cs)。 ParentTemplate的构建操作设置为“无”("None"),自定义工具设置为“TextTemplatingFileGenerator”。以下代码来自ParentTemplate:

<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ import namespace="System.IO" #>
<#
    for (int i = 0; i < 3; i++)
    {
#>
<#@ include file="ChildTemplate.t4" #>
<#
    string filename = Path.Combine(path, String.Format("{0}i.txt", myFile));
    File.WriteAllText(filename, this.GenerationEnvironment.ToString());
    this.GenerationEnvironment.Remove(0, this.GenerationEnvironment.Length);
    }
#>

在ChildTemplate中只有文本“Hello World”。所以我想要的输出是3个.txt文件,内容为“Hello World”,就这样。因此,不生成其他文件,如ParentTemplate.cs。
有什么办法可以防止生成ParentTemplate.cs吗?
2个回答

4

只需清除“自定义工具”属性值即可。


2

这里可以得知,以下操作可以欺骗Visual Studio不为使用生成器的.tt文件生成输出文件。

<#@ output extension="/" #>

或者

<#@ output extension="\\" #>
注意: 这是一个hack,仍然会产生警告。
注意: 清除Custom Tool属性值将无法实现您想要的效果,因为这将完全避免运行模板。

你也可以采取更迂回的方法(更耗时):

  • 使用DTEEnv(仅在Visual Studio中运行时可用)在生成期间从VSProject中移除文件。
  • 使用构建任务在生成后移除和删除项(使用MSBuild)。

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