Génération de code et modèles de texte T4Code Generation and T4 Text Templates

Dans Visual StudioVisual 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.In Visual StudioVisual Studio, a T4 text template is a mixture of text blocks and control logic that can generate a text file. La logique de contrôle est écrite comme des fragments de code du programme en Visual C#Visual C# ou Visual BasicVisual Basic.The control logic is written as fragments of program code in Visual C#Visual C# or Visual BasicVisual 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.In Visual Studio 2015 Update 2 and later, you can use C# version 6.0 features in T4 templates directives. 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.The generated file can be text of any kind, such as a Web page, or a resource file, or program source code in any language.

Il existe deux types de modèles de texte T4 :There are two kinds of T4 text templates:

Lesmodè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.Run time T4 text templates ('preprocessed' templates) are executed in your application to produce text strings, typically as part of its output.
Par exemple, vous pouvez créer un modèle pour définir une page HTML :For example, you could create a template to define an HTML page:

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

Remarquez que le modèle ressemble à la sortie générée.Notice that the template resembles the generated output. La ressemblance du modèle avec la sortie obtenue vous aide à éviter des erreurs quand vous voulez le modifier.The similarity of the template to the resulting output helps you avoid mistakes when you want to change it.

De plus, le modèle contient des fragments de code du programme.In addition, the template contains fragments of program code. 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.You can use these fragments to repeat sections of text, to make conditional sections, and to show data from your application.

Pour générer la sortie, votre application appelle une fonction générée par le modèle.To generate the output, your application calls a function that is generated by the template. Par exemple :For example:

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

Votre application peut s’exécuter sur un ordinateur sur lequel Visual StudioVisual Studio n’est pas installé.Your application can run on a computer that does not have Visual StudioVisual Studio installed.

Pour créer un modèle au moment de l’exécution, ajoutez un fichier Modèle de texte prétraité à votre projet.To create a run-time template, add a Preprocessed text template file to your project. Vous pouvez également ajouter un fichier texte brut et affecter à sa propriété Outil personnalisé la valeur TextTemplatingFilePreprocessor.Alternatively, you can add a plain text file and set its Custom Tool property to TextTemplatingFilePreprocessor.

Pour plus d’informations, consultez génération de texte d’exécution avec les modèles de texte T4.For more information, see Run-Time Text Generation with T4 Text Templates. Pour plus d’informations sur la syntaxe des modèles, consultez l’écriture d’un modèle de texte T4.For more information about the syntax of templates, see Writing a T4 Text Template.

Lesmodèles de texte T4 au moment du design sont exécutés dans Visual StudioVisual Studio pour définir une partie du code source et d’autres ressources de votre application.Design-time T4 text templates are executed in Visual StudioVisual Studio to define part of the source code and other resources of your 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 .csou .vb, ou d’autres fichiers sources.Typically you would use several templates that read the data in a single input file or database, and generate some of your .cs, .vb, or other source files. Chaque modèle génère un fichier.Each template generates one file. Ils sont exécutés dans Visual StudioVisual Studio ou MSBuildMSBuild.They are executed within Visual StudioVisual Studio or MSBuildMSBuild.

Par exemple, vos données d’entrée peuvent être un fichier XML de données de configuration.For example, your input data could be an XML file of configuration data. 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.Whenever you edit the XML file during development, the text templates would regenerate part of the application code. L’un des modèles peut ressembler à l’exemple suivant :One of the templates could resemble the following example:

<#@ 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 :Dependent on the values in the XML file, the generated .cs file would resemble the following:

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

Autre exemple : l’entrée peut être un diagramme de flux de travail dans une activité d’entreprise.As another example, the input could be a diagram of workflow in a business activity. 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.When the users change their business workflow, or when you start work with new users who have a different workflow, it is easy to regenerate the code to fit the new model.

Les modèles au moment du design rendent la modification de la configuration plus rapide et plus fiable quand les spécifications changent.Design-time templates make it quicker and more reliable to change the configuration when the requirements change. 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.Typically the input is defined in terms of business requirements, as in the workflow example. Cela facilite les discussions avec vos utilisateurs concernant les changements.This makes it easier to discuss the changes with your users. Par conséquent, les modèles au moment du design sont un outil utile dans un processus de développement agile.Design-time templates are therefore a useful tool in an agile development process.

Pour créer un modèle au moment du design, ajoutez un fichier Modèle de texte à votre projet.To create a design-time template, add a Text Template file to your project. Vous pouvez également ajouter un fichier texte brut et affecter à sa propriété Outil personnalisé la valeur TextTemplatingFileGenerator.Alternatively, you can add a plain text file and set its Custom Tool property to TextTemplatingFileGenerator.

Pour plus d’informations, consultez génération du Code à l’aide de modèles de texte T4 au moment du Design.For more information, see Design-Time Code Generation by using T4 Text Templates. Pour plus d’informations sur la syntaxe des modèles, consultez l’écriture d’un modèle de texte T4.For more information about the syntax of templates, see Writing a T4 Text Template.

Note

Le terme modèle est parfois utilisé pour décrire les données lues par un ou plusieurs modèles.The term model is sometimes used to describe data read by one or more templates. Le modèle peut se présenter sous n’importe quel format, dans tout type de fichier ou de base de données.The model can be in any format, in any kind of file or database. Il n’est pas tenu d’être un modèle UML ni un modèle de langage spécifique à un domaine.It does not have to be a UML model or a Domain-Specific Language model. 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.'Model' just indicates that the data can be defined in terms of the business concepts, rather than resembling the code.

La fonctionnalité de transformation de modèle de texte est appelée T4.The text template transformation feature is named T4.

Dans cette sectionIn This Section

Génération de texte à l’exécution à l’aide des modèles de texte T4Run-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.In any application that generates text files, precompiled text templates are an easy and reliable method of defining the text. Toutefois, cette méthode ne peut pas être utilisée pour les modèles de texte qui changent au moment de l’exécution.However, this method cannot be used for text templates that change at run time.

Génération de code au moment du design à l’aide de modèles de texte T4Design-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.Generating code and other resources from a model lets you update your application by updating the model.

Génération de code dans un processus de générationCode Generation in a Build Process
Si vous avez installé le Kit de développement logiciel (SDK) Visualization and Modeling pour Visual StudioVisual Studio , vous pouvez garantir que le logiciel généré restera à jour des modifications dans le modèle.If you have installed Visual StudioVisual Studio Visualization and Modeling SDK, you can ensure the generated software keeps up to date with changes in the model.

Écriture d’un modèle de texte T4Writing a T4 Text Template
Syntaxe d’un fichier modèle de texte.The syntax of a text template file.

Procédure pas à pas : génération de code à l’aide de modèles de texteWalkthrough: Generating Code by using Text Templates
Démonstration d’une façon d’utiliser la génération de code.A demonstration of one way to use code generation.

Débogage d’un modèle de texte T4Debugging 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.How to debug text templates, and some common text template errors.

Génération de fichiers avec l’utilitaire TextTransformGenerating Files with the TextTransform Utility
Outil en ligne de commande qui permet d’exécuter des transformations du modèle de texte.The command-line tool that you can use to run text template transformations.

Personnalisation d’une transformation de texte T4Customizing 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.How to write directive processors and custom templating hosts for your own data sources.

Voir aussiSee Also

Génération de code à partir d’un langage spécifique à un domaineGenerating Code from a Domain-Specific Language