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

Informations
Créateur Novell, Xamarin, Microsoft
Première version
Dépôt https://github.com/mono/t4
Écrit en c#
Système d'exploitation Linux, Windows
Type Moteur de template (en)
Framework
Politique de distribution Gratuit
Licence Licence MIT

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 Core
  • 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 4 balises permettant des actions différentes :

  • <# #> permet de saisir des instructions. Une instruction se compose de code .NET classique.
  • <#@ #> Ce sont des balises utiliser au début du Template afin de spécifier son comportement. Les directives permettent notamment de renseigner le type de fichier de sortie et les assembly utilisable 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

  • Portail de Microsoft
  • Portail de l’informatique
  • Portail des logiciels libres
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.