运行另一个嵌套的文本模板文件

时间:2013-09-11 16:16:40

标签: c# visual-studio t4

简而言之,我需要在另一个文本模板文件中运行文本模板文件。

详细信息: 我的问题是我们有一些.tt文件,它们基本上将几个SQL文件合并在一个地方。然而,他们处于混乱中。

  1. Schema.tt
  2. InitialProductionData.tt
  3. TestData.tt
  4. 基本上,TestData.tt还包含其他两个生成的所有.sql文件以及其他几个SQL文件。 InitialProduction.tt还包含Schema.tt的结果SQL文件。

    每个文件都在不同的地方使用。

    文件内部如下所示:

    <#@ output extension=".sql" #>
    <#@ include file="../Schema/InitialProductionData.sql" #>
    SET NOCOUNT ON
    GO
    use [SomeDatabase]
    GO
    <#@ include file="HelloWorld.sql" #>
    <#@ include file="GoogleData.sql" #>
    <#@ include file="YahooData.sql" #>
    

    但是为了正确运行TestData.tt文件,我需要先运行其他.tt文件。我需要的是,当我运行TestData.tt时,它会自动按顺序运行其他的并使用生成的脚本生成包含所有内容的最终SQL脚本。

1 个答案:

答案 0 :(得分:1)

我认为您有两种选择:使用inlcudes而不是.tt's或将生成的代码写入一个模板的SQL文件。

对于第一种方法,您所要做的就是将.tt文件的扩展名更改为.ttinc,并确保它们未设置为自动生成。这样,只有在包含在另一个文本模板中时才会运行它们。

然后,您可以像这样包含它们:

&lt;#@ include file =“TestData.ttinclude”#&gt;

另一种选择是写出生成的代码以将文件与一个主模板分开。 Oleg Sych在他的blog上写了这篇文章。