Code Generation and T4 Text Templates

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Dans Visual Studio, un modèle de texte T4 est un mélange de blocs de texte et de logique de contrôle qui peut générer un fichier texte. La logique de contrôle est écrite comme des fragments de code du programme en Visual C# ou Visual Basic. Dans Visual Studio 2015 Update 2 et versions ultérieures, vous pouvez utiliser les fonctionnalités C# version 6.0 dans les directives de modèles T4. Le fichier généré peut être du texte de tout type, tel qu’une page web ou un fichier de ressources, ou du code source de programme dans tout langage.

Il existe deux types de modèles de texte T4 :

Les modèles de texte T4 d’exécution (modèles « prétraités ») sont exécutés dans votre application pour produire des chaînes de texte, généralement dans le cadre de sa sortie.
Par exemple, vous pouvez créer un modèle pour définir une page HTML :

<html><body>  
 The date and time now is: <#= DateTime.Now #>  
</body></html>  

Remarquez que le modèle ressemble à la sortie générée. La ressemblance du modèle avec la sortie obtenue vous aide à éviter des erreurs quand vous voulez le modifier.

De plus, le modèle contient des fragments de code du programme. Vous pouvez utiliser ces fragments pour répéter des sections de texte, organiser des sections conditionnelles et afficher des données de votre application.

Pour générer la sortie, votre application appelle une fonction générée par le modèle. Exemple :

string webResponseText = new MyTemplate().TransformText();  
  

Votre application peut s’exécuter sur un ordinateur sur lequel Visual Studio n’est pas installé.

Pour créer un modèle au moment de l’exécution, ajoutez un fichier Modèle de texte prétraité à votre projet. Vous pouvez également ajouter un fichier texte brut et affecter à sa propriété Outil personnalisé la valeur TextTemplatingFilePreprocessor.

Pour plus d'informations, consultez Run-Time Text Generation with T4 Text Templates. Pour plus d’informations sur la syntaxe des modèles, consultez Writing a T4 Text Template.

Les modèles de texte T4 au moment du design sont exécutés dans Visual Studio pour définir une partie du code source et d’autres ressources de votre application.
En général, vous utilisez plusieurs modèles qui lisent les données dans une base de données ou un fichier d’entrée unique et génèrent une partie de vos fichiers .cs ou .vb, ou d’autres fichiers sources. Chaque modèle génère un fichier. Ils sont exécutés dans Visual Studio ou MSBuild.

Par exemple, vos données d’entrée peuvent être un fichier XML de données de configuration. Chaque fois que vous modifiez le fichier XML pendant le développement, les modèles de texte régénèrent une partie du code d’application. L’un des modèles peut ressembler à l’exemple suivant :

<#@ output extension=".txt" #>  
<#@ assembly name="System.Xml" #>  
<#  
 System.Xml.XmlDocument configurationData = ...; // Read a data file here.  
#>  
namespace Fabrikam.<#= configurationData.SelectSingleNode("jobName").Value #>  
{  
  ... // More code here.   
}  
  

En fonction des valeurs dans le fichier XML, le fichier .cs généré peut ressembler à ce qui suit :

namespace Fabrikam.FirstJob  
{  
  ... // More code here.   
}  

Autre exemple : l’entrée peut être un diagramme de flux de travail dans une activité d’entreprise. Quand les utilisateurs modifient leur flux de travail d’entreprise ou que vous commencez à travailler avec de nouveaux utilisateurs qui ont un flux de travail différent, il est facile de régénérer le code pour l’adapter au nouveau modèle.

Les modèles au moment du design rendent la modification de la configuration plus rapide et plus fiable quand les spécifications changent. En général, l’entrée est définie en termes de besoins de l’entreprise, comme dans l’exemple de flux de travail. Cela facilite les discussions avec vos utilisateurs concernant les changements. Par conséquent, les modèles au moment du design sont un outil utile dans un processus de développement agile.

Pour créer un modèle au moment du design, ajoutez un fichier Modèle de texte à votre projet. Vous pouvez également ajouter un fichier texte brut et affecter à sa propriété Outil personnalisé la valeur TextTemplatingFileGenerator.

Pour plus d'informations, consultez Design-Time Code Generation by using T4 Text Templates. Pour plus d’informations sur la syntaxe des modèles, consultez Writing a T4 Text Template.

System_CAPS_ICON_note.jpg Remarque

Le terme modèle est parfois utilisé pour décrire les données lues par un ou plusieurs modèles. Le modèle peut se présenter sous n’importe quel format, dans tout type de fichier ou de base de données. Il n’est pas tenu d’être un modèle UML ni un modèle de langage spécifique à un domaine. Le terme « modèle » indique seulement que les données peuvent être définies en termes de concepts d’entreprise, plutôt que de ressembler au code.

La fonctionnalité de transformation de modèle de texte est appelée T4.

Run-Time Text Generation with T4 Text Templates
Dans toute application qui génère des fichiers texte, les modèles de texte précompilés constituent une méthode simple et fiable pour définir le texte. Toutefois, cette méthode ne peut pas être utilisée pour les modèles de texte qui changent au moment de l’exécution.

Design-Time Code Generation by using T4 Text Templates
La génération de code et d’autres ressources à partir d’un modèle vous permet de mettre à jour votre application en mettant à jour le modèle.

Code Generation in a Build Process
Si vous avez installé le Kit de développement logiciel (SDK) Visualization and Modeling pour Visual Studio, vous pouvez garantir que le logiciel généré restera à jour des modifications dans le modèle.

Writing a T4 Text Template
Syntaxe d’un fichier modèle de texte.

Procédure pas à pas : génération de code à l'aide de modèles de texte
Démonstration d’une façon d’utiliser la génération de code.

Debugging a T4 Text Template
Comment déboguer des modèles de texte et résoudre certaines erreurs courantes liées aux modèles de texte.

Generating Files with the TextTransform Utility
Outil en ligne de commande qui permet d’exécuter des transformations du modèle de texte.

Customizing T4 Text Transformation
Comment écrire des processeurs de directive et des hôtes de modèles personnalisés pour vos propres sources de données.

Generate files from a UML model
Génération de code à partir d'un langage spécifique à un domaine

Afficher: