Partager via


Traiter des modèles de texte à l’aide d’un hôte personnalisé

Le processus de transformation de modèle de texte prend un fichier de modèle de texte comme entrée et produit un fichier texte comme sortie. Vous pouvez appeler le moteur de transformation de texte à partir d’une extension Visual Studio ou d’une application autonome s’exécutant sur une machine où Visual Studio est installé. Toutefois, vous devez fournir un hôte de modèles de texte. Cette classe connecte le modèle à l'environnement, recherchant des ressources telles que les assemblys et les fichiers Include, et traitant les messages d'erreur et de sortie.

Conseil

Si vous écrivez un package ou une extension qui doit s’exécuter dans Visual Studio, utilisez le service de modèles de texte au lieu d’écrire votre propre hôte. Pour plus d’informations, consultez Appel d’une transformation de texte dans une extension VS.

Notes

Il est préférable de ne pas utiliser les transformations de modèle de texte dans les applications serveur. Il est déconseillé de les employer, sauf dans un thread unique. En effet, le moteur de création de modèles de texte réutilise un AppDomain unique pour traduire, compiler et exécuter des modèles. Le code traduit n'a pas été conçu pour être thread-safe. Le moteur est conçu pour traiter les fichiers en série, quand ils sont dans un projet Visual Studio au moment de la conception.

Pour les applications au moment de l’exécution, utilisez des modèles de texte prétraités : consultez Génération de texte au moment de l’exécution avec des modèles de texte T4.

Si votre application utilise un ensemble de modèles fixés au moment de la compilation, il est plus facile d'employer des modèles de texte prétraités. Vous pouvez également utiliser cette approche si votre application doit s’exécuter sur une machine où Visual Studio n’est pas installé. Pour plus d’informations, consultez Génération de texte au moment de l’exécution avec des modèles de texte T4.

Exécuter un modèle de texte dans votre application

Pour exécuter un modèle de texte, vous pouvez appeler la méthode ProcessTemplate de Microsoft.VisualStudio.TextTemplating.Engine :

using Microsoft.VisualStudio.TextTemplating;
...
Engine engine = new Engine();
string output = engine.ProcessTemplate(templateString, host);

Votre application doit rechercher et fournir le modèle, de même que traiter la sortie.

Dans le paramètre host, vous devez fournir une classe qui implémente ITextTemplatingEngineHost. Celle-ci est rappelée par le moteur.

L'hôte doit être en mesure de consigner les erreurs, de résoudre les références à l'assembly et aux fichiers Include, de fournir un domaine d'application dans lequel le modèle peut s'exécuter et d'appeler le processeur approprié pour chaque directive.

Microsoft.VisualStudio.TextTemplating.Engine est défini dans Microsoft.VisualStudio.TextTemplating.*.0.dll, et ITextTemplatingEngineHost est défini dans Microsoft.VisualStudio.TextTemplating.Interfaces.*.0.dll.

Contenu de cette section

La procédure pas à pas : Création d’un hôte de modèle de texte personnalisé montre comment créer un hôte de modèle de texte personnalisé qui rend disponible la fonctionnalité de modèle de texte en dehors de Visual Studio.

Référence

ITextTemplatingEngineHost