Pliki T4 (Text Template Transformation Toolkit) służą do generacji plików o dowolnym rozszerzeniu z bloków tekstu połączonych z blokami kodu pisanych w C# lub Visual Basic. Obowiązuje pewna prosta do opanowania składnia umożliwiająca oddzielenie kodu od tekstu oraz obliczanie wartości które chcemy wstawić w danym miejscu. Transformacja pliku następuje w momencie, gdy zapiszemy plik o rozszerzeniu .tt.
Aby dodać nowy plik, wybieramy Add...New Item... lub ctrl + shift + A. Z listy wybieramy Text Template:
Wygenerowane zostaną dwa pliki : .tt i .txt. Rozszerzenie możemy zmienić w nagłówku pliku .tt, podobnie jak język, w którym chcemy pisać. Kod od tekstu i ustawień oddziela się różnymi rodzajami tagów:
Tag otwierający ustawienia : <#@
Tag otwierający kod : <#
Zwykły tekst nie jest zamykany w żadnych tagach.
Poniższy przykład pokazuje możliwości szablonów T4.
Załóżmy, że chcemy na podstawie pewnej tablicy wygenerować klasy z konstruktorami. Poniższy kod pokazuje, jak to uczynić.
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
namespace MyNamespace
{
<# var Countries = new string[]{"Poland","England","Ukraine"};
foreach (var country in Countries)
{#>
public class <#=country#>
{
public <#=country#>()
{
}
}
<#}#>
}
W wyniku otrzymamy plik .cs o następującej treści :
namespace MyNamespace
{
public class Poland
{
public Poland()
{
}
}
public class England
{
public England()
{
}
}
public class Ukraine
{
public Ukraine()
{
}
}
}