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

时间:2012-10-16 06:57:57

标签: templates t4

我有一个名为ParentTemplate的T4模板,其中包含另一个名为ChildTemplate的T4模板。我的想法是调用我的ParentTemplate并在每次调用ChildTemplate时生成一个文件。但是,我的ParentTemplate还会创建一个我不需要的文件(.cs)。 ParentTemplate的Build Action设置为“None”,Custom Tool设置为“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 个答案:

答案 0 :(得分:4)

只需清除Custom Tool属性值。

答案 1 :(得分:1)

here开始,它表示您可以执行以下操作,以使Visual Studio不会为使用生成器的.tt文件生成输出文件。

<#@ output extension="/" #>

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

注意:这是一个黑客,仍然会发出警告 注意:清除Custom Tool属性值无法达到您想要的效果,因为这样可以避免完全运行模板。

您还可以采用更加迂回(且耗时)的方法:

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