2010-02-23 54 views
0

我打算使用T4模板來生成配置文件。 我有一個基本設置的main.tt文件。 每個環境都有不同的.tt文件,其中包含main.tt 我想要實現的一件事是如何確保每個環境特定的.tt文件覆蓋main.tt變量。 我需要這樣做,因爲我想確保所有的值都覆蓋在環境特定的.tt文件中,否則T4模板將會選取main.tt值。 我想避免從main.tt中挑選任何缺少的環境值。 我們如何從main.tt指定強制覆蓋?T4模板強制配置值

<#@模板語言=「C#」#> <#@輸出擴展=「的.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具體數值?

回答

0

以下是hot to generate config files with T4的示例。 T4中沒有特殊功能來使這些字段成爲必需。你可以在你的主模板的代碼中檢查它們,或者讓它拋出NullReferenceException,這正是我認爲這個例子所做的。

0

#<##>塊內的任何東西基本上都只是.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!"); 
} 
#>