¿Con qué fines ha utilizado T4?


T4 ha existido durante varios años en Visual Studio, pero no recibe mucha atención. Sin embargo, para aquellos que lo saben, parece haber algunos propósitos muy creativos y útiles.

Estoy investigando algunas formas diferentes en que se usa T4, y me gustaría escuchar cómo puede haberlo utilizado para escenarios de la vida real. Me interesan principalmente los usos no estándar y creativos.

Algunos ejemplos interesantes:

  1. Phil Haack usa T4 para crear archivos CSS estáticos desde .menos
  2. A Generar Propiedades de Dependencias WPF y Silverlight utilizando plantillas T4

Nota: Me doy cuenta de que esta es una pregunta orientada a la discusión, pero las respuestas podrían ser útiles para otros. Lo he etiquetado como subjetivo y también marcado como "wiki de la comunidad", así que por favor permita que la pregunta permanezca abierta. ¡Gracias!

Author: Chris Melinn, 2010-01-12

9 answers

He utilizado las plantillas T4 dentro de la arquitectura sharp para generar todo, desde modelos hasta controladores y vistas básicas.

Definitivamente vale la pena echarle un vistazo, incluso si solo desea ver algunos ejemplos avanzados de plantillas T4 en acción

 4
Author: lomaxx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-11 23:58:07

No soy un gran fan de la fibrosa-ness de aplicación.config / web.config, así que uso T4 para leer esos archivos y hacer una clase AppSettings / WebSettings que envuelve las cadenas de conexión y la clave / valores en una clase real. Esto significa que, siempre y cuando utilice siempre AppSettings.someValue para hacer referencia a mi aplicación.config, obtengo compile time checking, que es realmente agradable.

 8
Author: mattmc3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-05 18:41:40

Utilizo T4 para:

  1. Genere scripts CRUD SQL Server y Oracle.
  2. Generar una capa de acceso a datos, basada en un esquema de base de datos
  3. Capa Generar Capa Lógica de negocio, basada en un esquema de base de datos
  4. Generar ASP.Net formularios web, tanto HTML como codebehind, basados en un esquema de base de datos (scafolding).

Me da un punto de partida bueno, rápido, simple y básico para mis proyectos.

Y lo mejor es que tengo el control.

Aquí puede descargar un ejemplo de mis plantillas

 4
Author: Nathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-28 18:04:06

SubSonic 3.0 hace un uso intensivo de plantillas T4 para generar su código de entidad.

Esencialmente llama a GetSchema() en su conexión de base de datos y ejecuta cada tabla que encuentra a través de la plantilla de entidad T4. Lo bueno de usar T4 aquí es que si no te gusta la forma en que maneja tu esquema de base de datos, simplemente edita la plantilla.

He ajustado los T4 para manejar mejor las bases de datos MySQL para mi situación, ya que hago uso de muchas tinyint columnas que el T4 predeterminado se asigna a los tipos byte. Una edición rápida del T4 me dio el tipo que quería en su lugar para las entidades de mi aplicación.

 2
Author: womp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-11 23:58:34

Plantillas de LINQ a SQL para T4
http://l2st4.codeplex.com /

Plantillas que replican la funcionalidad de los generadores de código SqlMetal y LINQ to SQL classes designer tanto para C# como para VB.Net requiriendo solo Visual Studio 2008.

 2
Author: Robert Harvey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-12 00:02:25

Echa un vistazo a este podcast en T4 de Scott Hanselman hablando con Kathleen Dollard.
http://www.hanselminutes.com/default.aspx?showID=170

 2
Author: Chuck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-12 00:04:22

He usado T4 para generar:

  • proxies (tiempo de diseño, para el monitoreo de inyección/envoltura código/registro/... en una api expuesta muy específica).
  • generación de interfaz para una interfaz uno a uno/asignación de clases
  • reemplazar reflexión código por código de llamada "directamente / real" (ventaja de mantenimiento de código de reflexión, pero el rendimiento del código real), por ejemplo al permitir el acceso a las propiedades a través de un indexador, o algo en esa dirección.
  • generación xml para un proyecto java (no se pudo encontrar un Solución similar a T4 para java, que se comparte fácilmente dentro de una empresa, T4 es fácil porque está construido y se puede ejecutar desde la línea de comandos)
  • generar enumeraciones a partir de una base de datos maestra (los generamos tanto para una base de código delphi como para una base de código. Net)
 2
Author: Cohen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-07 16:49:02

Las plantillas T4 se usan mucho en la Web Service Software Factory (Service Factory).

 1
Author: John Saunders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-12 00:36:54

Vea aquí una lista de más de 30 generadores T4 de la comunidad en varias áreas, incluyendo ASP.NET, WCF, UML, ADO.NET,. NET

Http://t4-editor.tangible-engineering.com/How-Do-I-With-T4-Editor-Text-Templates.htm

 1
Author: Tim Fischer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-12 16:14:30