2009-05-13 8 views
6

¿Alguien ha portado la plantilla de netTiers establecida en las plantillas T4 de Visual Studio? ¿O hay un sistema de alcance similar? ¿Alguien usa T4 en un ambiente de trabajo? ¿Cuáles (si las hay) diferencias importantes existen entre Codesmith y T4?CodeSmith v.s. T4: suite de nivel .netTiers

+0

También me interesa saber cómo las personas superan el hecho de que cada plantilla T4 genera solo un archivo de salida. –

+0

http://www.olegsych.com/2008/03/how-to-generate-multiple-outputs-from-single-t4-template/ –

Respuesta

5

Me metí en T4 por un tiempo - oye, si es gratis y está incluido en VS2008, úsalo, ¿verdad?

Mi idea básica era crear un conjunto de plantillas para leer una tabla de base de datos y crear nuestras propias clases de ORM "roll-your-own".

Renuncié a T4, frustrado e incapaz de hacer funcionar incluso las cosas más básicas que son un pedazo de pastel en CodeSmith.

Incluso una tarea simple como seleccionar qué servidor, base de datos y tabla usar no se puede hacer en T4 de manera eficiente desde "fuera" de la plantilla misma. Sí, puedes codificar todos estos valores como valores de cadena en una plantilla T4, pero vamos, eso realmente no es una solución, ¿o sí?

CodeSmith tiene un gran soporte para elegir servidor, base de datos y tablas, y puede establecerlos como propiedades en la plantilla y simplemente elegir lo que desee y dejar que la plantilla haga sus cosas en esa tabla particular que eligió.

Mi conclusión: T4 es prometedor, pero "todavía no". Podría funcionar para escenarios muy simples, pero en este momento, en mi opinión, no es ni mucho menos tan flexible y poderoso como Codesmith.

Para un escenario como .netTiers, me quedaría con Codesmith por el momento.

Marc

+0

Por supuesto, puede tener configuraciones en una plantilla separada e incluirlas en su plantilla de generación principal. De esta manera, su archivo de configuración será pequeño y todo estará contenido en un solo archivo. Podría llamarse 'settings.tt' –

+0

@Robert: seguro, pero eso no resuelve el problema fundamental: no hay una manera fácil de pasar parámetros a las plantillas T4 en este momento, un inconveniente ** MAYOR ** en mi opinión –

+0

Lo sé esta es una vieja pregunta, pero por si acaso alguien tropieza con la discusión: T4 ahora tiene una directiva "Parameter". http://www.olegsych.com/2010/05/t4-parameter-directive/ – EBarr

5

T4 no es CodeSmith. Sí, especifica los parámetros en un archivo .tt en forma de código C# o Visual Basic y usa una directiva < # @ include #> para hacer referencia a la implementación real de la lógica de generación de código. Esto no es más difícil de codificar que especificar la misma información en un archivo XML con CodeSmith.

Para obtener un conjunto de plantillas T4 similar a NetTiers, consulte S # arp Architecture: http://code.google.com/p/sharp-architecture/.

1

Si está buscando una implementación T4 de un DAL bien soportado que sea de código abierto con una interfaz Linq, así como su propia interfaz fluida que creará envoltorios para tablas, procesos almacenados, vistas, etc. Entonces debe probar SubSonic 3.0. SubSonic 2.2 tiene la misma bondad menos la T4 y la interfaz Linq y está en modo de lanzamiento. SubSonic 3.0 está en Alpha, pero puede descargar el código o un .dll y las plantillas de T4 si lo desea.