私は、テンプレートの出力を生成するために使用できるクラスを生成するためにTextTemplatingFilePreprocessorで使用されるT4テンプレートを持っています。条件付きコンパイルシンボルをT4テンプレート内で使用することができます
T4テンプレートの最初に、いくつかの名前空間をインポートします。例えば。
<#@ import namespace="Company.ProductX.Widgets" #>
<#@ import namespace="Company.ProductX.Services" #>
//...
Iは、(同じインターフェイスしかしProductXに異なる機能を提供する)名前空間の別のセットでこれらの輸入を切り替えることPreprocessor Directivesを使用したいです。例えば。
<#
#if(ProductX)
{
#>
<#@ import namespace="Company.ProductX.Widgets" #>
<#@ import namespace="Company.ProductX.Services" #>
//...
<#
}
#endif
#>
<#
#if(ProductY)
{
#>
<#@ import namespace="Company.ProductY.Widgets" #>
<#@ import namespace="Company.ProductY.Services" #>
//...
<#
}
#endif
#>
上記の例では、輸入を問わず、プリプロセッサディレクティブのクラスに対応するusingステートメントを作成するように見えます。例えば。
using Company.ProductX.Widgets
using Company.ProductX.Services
using Company.ProductY.Widgets
using Company.ProductY.Services
テンプレート自体だけではなく、テンプレートの出力に影響を与えるようにT4テンプレートでプリプロセッサを使用するための別の方法はありますか?
このような「ヘッダー」テンプレートを使用して、これを実行しても問題はありません。製品に組み込まれているディレクティブの周囲に条件文を挿入する方法はありません。 – GarethJ
答えをありがとう。これは良い仕事のように聞こえる。私がそれを働かせたら、それを解決策としてマークします。 –