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

本文关键字:文件 文本 另一个 嵌套 运行 | 更新日期: 2023-09-27 18:31:07

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

详:我的问题是我们有一堆.tt文件,它们基本上将几个SQL文件组合在一个地方。然而,他们处于催眠状态。

  1. Schema.tt
  2. InitialProductionData.tt
  3. TestData.tt

基本上,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 脚本。

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

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

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

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

<#@>

另一种选择是写出生成的代码以从一个主模板中分离文件。 Oleg Sych在他的博客上写过这个。