T4 Dyrektywy dołączania
W szablonie tekstu w Visual Studio, możesz dołączyć tekst z innego pliku za pomocą <#@include#> dyrektywy.Można umieścić include dyrektyw w dowolnym miejscu szablonu tekst przed bloku funkcja pierwszej klasy <#+ ... #>.Dołączone pliki mogą również zawierać include dyrektyw oraz innych dyrektyw.Pozwala udostępnić szablon kodu i standardowy tekst między szablonami.
Używanie dyrektyw dołączania
<#@ include file="filePath" #>
filePathmoże być bezwzględny, lub względem bieżącego pliku szablonu.
Dodatkowo, szczególne Visual Studio rozszerzenia można określić ich własnych katalogów do wyszukiwania plików dołączeń.Na przykład po zainstalowaniu wizualizacji i modelowania SDK (narzędzia DSL) następujący folder jest dodawany do listy: Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\DSL SDK\DSL Designer\11.0\TextTemplates.
Te dodatkowe foldery zawierają może zależeć od rozszerzenie pliku.Na przykład, zawierać narzędzia DSL folderu dostępna wyłącznie w tym pliki, które mają rozszerzenie pliku.tt
filePathmoże zawierać zmienne środowiskowe rozdzielane z "%".Na przykład:
<#@ include file="%HOMEPATH%\MyIncludeFile.t4" #>
Nazwa pliku dołączanego nie mają rozszerzenie ".tt".
Chcesz użyć innego rozszerzenia takich jak ".t4" dla dołączonych plików.Jest tak dlatego, że podczas dodawania .tt pliku projektu, Visual Studio automatycznie ustawia jego Niestandardowego narzędzia właściwość, aby TextTemplatingFileGenerator.Zazwyczaj nie ma dołączonych plików zostaną przekształcone indywidualnie.
Z drugiej strony należy pamiętać, że w niektórych przypadkach z rozszerzeniem wpływa dodatkowe foldery, które będą przeszukiwane dołączania plików.Może to być ważne, gdy wstawiany plik, który zawiera inne pliki.
Dołączona zawartość jest przetwarzany w prawie tak, jakby był częścią szablonu tym tekstem.Jednakże można dołączyć plik, który zawiera blok funkcja klasy <#+...#> nawet wtedy, gdy include dyrektywy następuje zwykły tekst i bloki kontrolne standardowych.
MyTextTemplate.tt:
<#@ output extension=".txt" #>
Output message 1 (from top template).
<#@ include file="TextFile1.t4"#>
Output message 5 (from top template).
<#
GenerateMessage(6); // defined in TextFile1.t4
AnotherGenerateMessage(7); // defined in TextFile2.t4
#>
TextFile1.t4:
Output Message 2 (from included file).
<#@include file="TextFile2.t4" #>
Output Message 4 (from included file).
<#+ // Start of class feature control block.
void GenerateMessage(int n)
{
#>
Output Message <#= n #> (from GenerateMessage method).
<#+
}
#>
TextFile2.t4:
Output Message 3 (from included file 2).
<#+ // Start of class feature control block.
void AnotherGenerateMessage(int n)
{
#>
Output Message <#= n #> (from AnotherGenerateMessage method).
<#+
}
#>
Wynikowy wygenerowany plik, MyTextTemplate.txt:
Output message 1 (from top template).
Output Message 2 (from included file).
Output Message 3 (from included file 2).
Output Message 4 (from included file).
Output message 5 (from top template).
Output Message 6 (from GenerateMessage method).
Output Message 7 (from AnotherGenerateMessage method).