Accueil🇫🇷Chercher

Text Template Transformation Toolkit

Text Template Transformation Toolkit, généralement appelée T4, est un template Open Source inclus avec Visual Studio.

T4 - Text Template Transformation Toolkit

Les fichiers source T4 permettent de générer des fichiers automatiquement à chaque exécution du programme (RuntimeTextTemplate), ou à chaque compilation de la solution (TextTemplate); et sont généralement désignés par l'extension de fichier ".tt".

Histoire

  • 2005 : Microsoft a sorti la première version de T4 en mĂŞme temps que la sortie de Visual Studio 2005
  • 2008 : Microsoft l'inclut Ă  la sortie de Visual Studio 2008
  • 2010 : Microsoft rajoute des nouvelles fonctionnalitĂ©s pour amĂ©liorer les performances
  • 2017 : Le moteur de template devient Open source, et supporte .NET
  • 2019 : JetBrains supporte maintenant T4 dans leur produit Rider[1]

DĂ©tails

T4 est utilisé par les développeurs dans le cadre d'une application ou d'un framework pour automatiser la création de fichiers texte avec une variété de paramètres. Ces fichiers nouvellement générés peuvent être n'importe quel format de texte, tel que du code, XML, HTML ou XAML.

Pour utiliser un template T4, il faut disposer d’un environnement Visual Studio, d'une version supérieure à celle de 2005, et créer un fichier T4 dans notre solution.

Avantages

Le gros avantage des T4 est d'automatiser la génération de code similaire ou redondant, par exemple, les fichiers DTOs, WebServices, DataEntities; mais aussi, dans des versions améliorés, des ServicesContracts, des Mappers et des Tests unitaires testant la nullabilité des arguments.

Les fichiers T4 ne se limitent pas qu'à la génération de code, mais aussi de tout type de fichier.

De plus, T4 ne nécessite pas d'installation

Inconvénients

Il n'existe pas d'éditeur de fichier T4 natif. Les développeurs doivent écrire leur code direction sur un fichier blanc, il existe néanmoins plusieurs extensions Visual Studio tel que Devart T4 Editor, ou alors des extenstions Notepad++.

De plus, le T4 est difficile à appréhender aux premiers abords, car elle possède sa propre syntaxe axée autour d'un système de balise.

Balises

Le T4 possède quatre balises permettant des actions différentes :

  • <# #> permet de saisir des instructions. Une instruction se compose de code .NET classique.
  • <#@ #> Ce sont des balises utilisĂ©es au dĂ©but du Template afin de spĂ©cifier son comportement. Les directives permettent notamment d'indiquer le type de fichier de sortie et les assembly utilisables dans les blocs d’instructions.
  • <#= #> Ce bloc permet d’afficher le texte correspondant Ă  la variable dans notre fichier de sortie.
  • <#+ #> C'est un bloc de fonctionnalitĂ©s de classe. Cette balise permet de dĂ©finir des fonctions utilisables dans le Template. Attention les blocks de fonctionnalitĂ©s doivent ĂŞtre dĂ©clarĂ©s Ă  la fin du fichier ".tt".

Exemple

L'exemple ci-dessous utilise les 4 différentes balises, et le package de référence TemplateFileManager permettant de générer plusieurs fichier en un T4.

<#@ template language="C#" hostspecific="true" #>
<#@ output extension="txt" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.IO" #>
<#@ include file="..\Packages\T4.TemplateFileManager.2.2.1\tools\ttinc\TemplateFilemanager.CS.ttinclude" #>
<#
var manager = TemplateFileManager.Create(this);
for(int i = 0 ; i < 10 ; i++)
{
	var filename = this.GetFilename(i);
    manager.StartNewFile(filename);
#>
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template at <#= DateTime.Now #>
//     File Declaration for the model : <#=filename#>             
// </auto-generated>
//------------------------------------------------------------------------------
Hello World !
<#
}
manager.Process();
#>
<#+ 
public string GetFilename(int number)
{
	return $"Say Hello ({i}).txt";
}
#>

Références

  1. (en) « Jetbrains Repository », sur GitHub (consulté le )

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.