T4模板强制配置值

时间:2010-02-23 11:36:48

标签: templates t4

我计划使用T4模板生成配置文件。 我有一个带有基本设置的main.tt文件。 每个环境都有不同的.tt文件,包括main.tt 我想要实现的一件事是如何确保每个特定于环境的.tt文件覆盖main.tt变量。 我需要这样做,因为我想确保在环境特定的.tt文件中覆盖所有值,否则T4模板将获取main.tt值。 我想避免从main.tt中选择任何丢失的环境值 我们如何从main.tt指定强制覆盖?

<#@ template language =“C#”#> <#@ output extension =“。config”#>        ”       providerName =“System.Data.SqlClient”/>     ”       providerName =“System.Data.SqlClient”/>    <#+   string NorthwindConnectionString =“Data Source = .; Initial Catalog = Northwind; Integrated Security = True”;   string PubsConnectionString =“Data Source = .; Initial Catalog = Pubs; Integrated Security = True”;

>

如何确保NorthwindConnectionString和PubsConnectionString在所有特定于环境的.tt文件中都有特定值?

2 个答案:

答案 0 :(得分:0)

以下是hot to generate config files with T4的示例。 T4中没有特殊功能可以使这些字段成为必需。您可以在主模板的代码中检查它们,或者让它抛出NullReferenceException,这就是我认为这个例子的作用。

答案 1 :(得分:0)

< ##>内的任何内容block基本上只是.NET代码,那么如果没有T4,你将如何解决这个问题呢?像这样的东西可能会正常工作:

<#
if (NorthwindConnectionString.Equals(
      "Data Source=.;Initial Catalog=Northwind;Integrated Security=True"))
{
    throw new CustomException("NorthwindConnectionString needs
        to be overriden in environment specific .tt file!");
}
#>