2009-10-23 14 views
14

J'écris un logiciel qui produit du code C#. La plupart du temps j'utilise StringTemplate et StringBuilder.Puis-je utiliser T4 par programmation à partir de C#?

Est-il possible d'utiliser des modèles T4 directement à partir de mon code?

+0

Essayez-vous d'automatiser T4 de C# –

+0

Exactement. J'ai l'application WinForms, dans laquelle l'utilisateur crée un service, puis l'application doit générer le code C# (c, java ...). –

Répondre

12

Oleg Sych décrit comment faire ceci ici: Understanding T4: Preprocessed Text Templates. Notez qu'il semble que vous aurez besoin de Visual Studio 2010 pour générer un modèle de texte prétraité, mais vous pourrez héberger le modèle de texte prétraité où vous voulez - y compris dans votre application WinForms.

+0

Le deuxième lien est maintenant mort. – Amy

+0

Pointé deuxième lien vers la page correspondante sur archive.org. HTH –

5

Une façon simple de le faire:

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 

proc.EnableRaisingEvents = false; 

// Set text transform program (this could change according to the Windows version) 
proc.StartInfo.FileName = "C:\\Program Files (x86)\\Common Files\\microsoft shared\\TextTemplating\\10.0\\TextTransform.exe"; 

// Specify T4 template file 
proc.StartInfo.Arguments = "C:\template.tt"; 

proc.Start(); 
+9

Ne supposez pas que C: \ existe. Surtout ne supposez pas que TextTemplating est installé. – SLaks