12

T4テンプレート出力を既存のファイルとマージすることは可能ですか?

たとえば、T4テンプレートがローカリゼーションリソースXMLファイルを生成する場合、それらを既存のリソースファイルにマージすることは可能ですか?

4

1 に答える 1

13

T4がGenerationEnvironmentプロパティを考慮して使用する、基盤となる文字列ビルダーにアクセスできます。したがって、T4に次のようなものを追加することで、実行可能なソリューションを得ることができるはずです。

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".txt" #>
<#@ Import Namespace="System.IO" #>

Line #<#= rand.Next(0, 100).ToString() #>
<# AppendFile(@"C:\Development\PodCastSync\test\test.txt"); #>

<#+
    Random rand = new Random();

    private void AppendFile(string filename)
    {
       File.AppendAllText(filename, GenerationEnvironment.ToString());
    }        
#>

デフォルトのバッキングファイルの更新を停止したい場合は、コンテンツを保存した後にGenerationEnvironmentを新しい文字列ビルダーに設定して、出力を停止することができます。

于 2011-06-08T11:02:41.240 に答える