¿alguien sabe si es posible ejecutar archivo de plantilla T4 de otra plantilla de T4, en el interior VS2010Operando plantillas T4 de otra plantilla T4
Gracias
¿alguien sabe si es posible ejecutar archivo de plantilla T4 de otra plantilla de T4, en el interior VS2010Operando plantillas T4 de otra plantilla T4
Gracias
Sí, se puede. Así es como lo estoy haciendo:
string templateText = File.ReadAllText(Host.ResolvePath(templateFileName));
Engine engine = new Engine();
string output = engine.ProcessTemplate(templateText, Host);
//this is optional - record all output to your file of choice:
File.WriteAllText(outputFilePath, output);
Existen múltiples optons con diferentes ventajas y desventajas:
Hacemos esto mucho. Aquí hay un ejemplo de cómo reutilizamos una plantilla T4 común, pero los "parámetros de paso" en él:
<#
var currentUsername = "billclinton"; // this is for integration tests impersonating a user in our case
#>
<#@ include file="..\SomeTemplateThatIWantToReuseHere.tt" #>
Y mantenemos nuestra plantilla T4 "genérico" determinando dinámicamente la ubicación que la plantilla T4 es en realidad corrió en (en este caso, la plantilla T4 que tiene la línea include
en ella):
string namespaceName = code.VsNamespaceSuggestion();
var namespaceParts = namespaceName.Split('.');
var currentNamespaceLeg = namespaceParts.Last();
esto nos permite hacer algunos muy potente de plantillas sin la necesidad de duplicar nuestras plantillas. Lo único que se "duplica" son nuestras 4 líneas .tt
archivos que tienen la llamada include
en ellos, pero estos son más o menos libre de mantenimiento, excepto lo que sea "configuración" queremos llevar a cabo mediante introducción de las variables en la forma en que lo hacemos.
Lo que su probablemente en busca de http://t4toolbox.codeplex.com/ es t4 caja de herramientas. Le permitirá generar códigos en archivos individuales y agregarlos a un proyecto automáticamente.
muy recomendable.
he utilizado t4 caja de herramientas para generar proyectos enteros simplemente sobre la base de un modelo.
qué se basan esto en T4 caja de herramientas? – Maslow
@Maslow no, no hay ninguna tercera parte obligada para que esto funcione ... – veljkoz
Para futuras consultas: Añadir una referencia a Microsoft.VisualStudio.TextTemplating.Interfaces.11.0 y añadir <# @ nombre de ensamblado = "Microsoft.VisualStudio.TextTemplating. Interfaces.11.0 "#> y <# @ import namespace =" Microsoft.VisualStudio.TextTemplating "#> en el archivo T4. – LosManos