studio code c# visual-studio t4 codesmith generative-programming

studio - c# code generator



Visual Studio T4 vs CodeSmith (1)

Estaba muy emocionado y entusiasmado con la T4 e intenté convertir todas mis cosas de CodeSmith a T4, solo para descubrir que hay algunas cosas que están mal con la T4.

  • no es compatible con los parámetros de su plantilla; debe codificar todo en su plantilla ...
  • el host de Visual Studio para T4 es bastante limitado
  • no hay soporte directo y fácil para múltiples archivos de salida desde una sola plantilla

Echa un vistazo a la publicación de Kathleen Dollard What Wrong with T4 - es prácticamente la Reina de la Generación de Código en .NET, y lo resume muy bien. Estoy totalmente de acuerdo con sus problemas.

En general, después de jugar e intentar mucho, me he dado por vencido con la T4; aún no está listo para el horario estelar, al menos no para el tipo de plantillas con las que estaba trabajando (en su mayoría inspeccionando tablas de bases de datos para extraerlas). valores, por ejemplo, como base de un ORM casero, o para extraer constantes y ajustes de configuración, etc. de la base de datos)

Y de experimentar con T4 en VS2010, no estoy seguro de cuánto de esto se ha solucionado, en realidad ... no mucho, parece. Hay algunos otros conceptos interesantes ( plantillas preprocesadas , supuestamente compatibilidad con parámetros, etc.) pero la mayoría de los defectos básicos aún parecen persistir ...

Así que por ahora: ¡¡no deseches a CodeSmith todavía !! Tal vez T4 en VS2016 sea igual de potente ... pero hasta entonces ...

Recursos:

He estado usando CodeSmith durante los últimos 2 años y me encanta lo que hace por mí. Sin embargo, también sé sobre T4, que está integrado en Visual Studio, y que también puede hacer algunas cosas muy interesantes. Basado en conversaciones con amigos T4 en VS2010 T4 va a ser aún mejor.

Entonces la pregunta es: ¿sigo viajando en el bus de CodeSmith o es hora de comenzar a convertir todas mis plantillas a T4?

Actualización Tal vez no estaba claro en la forma en que hice la pregunta. Obviamente, no voy a eliminar mis plantillas de cs y dejar de usarlas hasta que las nuevas plantillas funcionen. Sin embargo, ¿vale la pena el esfuerzo en este punto? ¿T4 en este punto ofrece una ventaja complementaria sobre CodeSmith? ¿Hay alguna característica o conjunto de características que al escribir mis plantillas para T4 en lugar de eso veré una mejora de 100X en mi eficiencia?