Directive d'inclusion T4
Dans un modèle de texte dans Visual Studio, vous pouvez inclure du texte d'un autre fichier à l'aide d'une directive <#@include#>.Vous pouvez placer les directives include n'importe où dans un modèle de texte avant le premier bloc de fonctionnalité de classe <#+ ... #>.Les fichiers inclus peuvent également contenir des directives include et d'autres directives.Cela vous permet de partager du code de modèle et du texte réutilisable entre les modèles.
Utilisation de directives Include
<#@ include file="filePath" #>
filePath peut être absolu ou relatif au fichier modèle actuel.
De plus, les extensions Visual Studio spécifiques peuvent spécifier leurs propres répertoires dans lesquels rechercher des fichiers Include.Par exemple, lorsque vous avez installé la visualisation et le SDK de modélisation (outils DSL), le dossier suivant est ajouté à la liste d'inclusion : Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\DSL SDK\DSL Designer\11.0\TextTemplates.
Ces dossiers d'inclusion supplémentaires peuvent dépendre de l'extension du fichier d'inclusion.Par exemple, le dossier d'inclusion des outils DSL est uniquement accessible aux fichiers d'inclusion ayant l'extension de fichier .tt
filePath peut inclure des variables d'environnement délimitées par "%".Par exemple :
<#@ include file="%HOMEPATH%\MyIncludeFile.t4" #>
Le nom d'un fichier joint n'a pas d'utiliser l'extension ".tt".
Vous souhaiterez peut-être utiliser une autre extension tels que ".t4" pour les fichiers inclus.En effet, lorsque vous ajoutez un fichier .tt à un projet, Visual Studio affecte automatiquement à sa propriété Outil personnalisé la valeur TextTemplatingFileGenerator.En général, vous ne souhaitez pas que les fichiers inclus soient transformés individuellement.
D'un autre côté, vous devez savoir que dans certains cas, l'extension de fichier affecte les dossiers supplémentaires dans lesquels seront recherchés les fichiers Include.Cela peut être important lorsque vous possédez un fichier inclus qui contient d'autres fichiers.
Le contenu inclus est traité presque comme s'il faisait partie du modèle de texte d'inclusion.Toutefois, vous pouvez inclure un fichier qui contient un bloc de fonctionnalité de classe <#+...#> même si la directive include est suivie de texte ordinaire et de blocs de contrôle standard.
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).
<#+
}
#>
Fichier généré résultant, 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).