Text Template Transformation Toolkit

Text Template Transformation Toolkit (通称：T4、または、T4 テキストテンプレート)は、Visual Studioに含まれるテンプレートベースのテキスト生成エンジンである。
C#またはVB.netのプログラムコードを含むテンプレートファイルを記述することで、最終的なテキストファイルを自動生成することができる。
例.
下記の内容の"Sample.tt"を作成する。
<#@ output extension=".txt" #>
<# for (int i = 1; i <= 4; i++) { #>
Hello, T<#=i#>!
上記のSample.ttを元に、同名で拡張子が.txtであるSample.txtが下記のように生成される。
構文.
テキストブロック.
テキストブロックは、制御ブロックではない全ての箇所を指す。
テキストブロックの中身は、出力内容に直接挿入される。
制御ブロックのみが書かれていて、かつ、出力が無い場合、行末の改行文字はテキストブロックとは見做されない。
エスケープ.
codice_1codice_2の直前にcodice_3を記述することで、エスケープできる。これらのブロックの直前に連なるcodice_3は2つ毎に1つのcodice_3にエスケープされる。
これ以外の箇所では、codice_3は単体でそのまま出力される。
つまり、以下のような出力となる。
制御ブロック.
標準制御ブロック.
codice_19で囲まれた箇所を指す。
標準制御ブロック内では、templateディレクティブで指定された言語(C#,VB.net)の制御を記述できる。
式制御ブロック.
codice_20で囲まれた箇所を指す。
式制御ブロック内では与えられた式の評価結果が、出力内容に挿入される。
例えば、codice_21と書いた場合、実行時(またはデザインの内容に変更があった時点)の現在時刻が挿入される。
ユーティリティメソッドのcodice_22メソッドの簡略表記と考えられる。
クラス機能制御ブロック.
codice_23で囲まれた箇所を指す。
クラス機能制御ブロックでは、主にテキストを生成するためのメソッドを定義する。
ディレクティブ.
codice_24で囲まれた箇所を指す。
コードはディレクティブと呼ばれ、テンプレートの処理方法を指示するために利用される。
ユーティリティメソッド.
codice_25クラスにユーティリティメソッドが定義されている。
例えば、codice_26,codice_27メソッドを利用することで、出力ファイルのインデントを操作することができる。
歴史.
T4の最初のバージョンは、Visual Studio 2005で登場した。当初はVisual Studioに同梱されておらず、SDKのインストールが必要だった。
Visual Studio 2008 以降では標準で同梱される。