Generación de código y plantillas de texto T4

En Visual Studio, una plantilla de texto T4 es una combinación de bloques de texto y lógica de control que puede generar un archivo de texto. La lógica de control se escribe como fragmentos de código de programa en Visual C# o Visual Basic. El archivo generado puede ser texto de cualquier tipo, como una página web o un archivo de recursos o código fuente del programa en cualquier lenguaje.

Hay dos tipos de plantillas de texto T4:

  • Las plantillas de texto T4 en tiempo de ejecución (plantillas 'preprocesadas') se ejecutan en la aplicación para generar cadenas de texto, normalmente como parte de su resultado.
    Por ejemplo, puede crear una plantilla para definir una página HTML:

    <html><body>
     The date and time now is: <#= DateTime.Now #>
    </body></html>
    

    Observe que la plantilla es similar al resultado generado. La similitud de la plantilla con el resultado sirve de ayuda para evitar errores cuando se desea modificar la plantilla.

    Además, la plantilla contiene fragmentos de código de programa. Puede utilizar estos fragmentos para repetir secciones de texto, hacer secciones condicionales y mostrar los datos de la aplicación.

    Para generar el resultado, la aplicación llama a una función que está generada por la plantilla. Por ejemplo:

    string webResponseText = new MyTemplate().TransformText();
    

    La aplicación se puede ejecutar en un equipo que no tiene Visual Studio instalado.

    Para crear una plantilla en tiempo de ejecución, agregue un archivo de Plantilla de texto preprocesada al proyecto. También puede agregar un archivo de texto sin formato y establecer su propiedad Herramienta personalizada en TextTemplatingFilePreprocessor.

    Para obtener más información, vea Generación de texto en tiempo de ejecución con plantillas de texto T4. Para obtener más información acerca de la sintaxis de plantillas, vea Escribir una plantilla de texto T4.

  • Las plantillas de texto T4 en tiempo de diseño se ejecutan en Visual Studio para definir parte del código fuente y otros recursos de la aplicación.
    Normalmente utilizaría varias plantillas que leen los datos en un archivo de entrada único o base de datos, y generaría algunos archivos .cs, .vb u otros archivos de código fuente. Cada plantilla genera un archivo. Se ejecutan dentro de Visual Studio o MSBuild.

    Por ejemplo, los datos de entrada podrían ser un archivo XML de datos de configuración. Siempre que modifique el archivo XML durante el desarrollo, las plantillas de texto regenerarían parte del código de aplicación. Una de las plantillas podría tener un aspecto similar al del siguiente ejemplo:

    <#@ output extension=".txt" #>
    <#@ assembly name="System.Xml" #>
    <#
     System.Xml.XmlDocument configurationData = ...; // Read a data file here.
    #>
    namespace Fabrikam.<#= configurationData.SelectSingleNode("jobName").Value #>
    {
      ... // More code here. 
    }
    

    Dependiente de los valores del archivo XML, el archivo .cs generado se parecería al siguiente:

    namespace Fabrikam.FirstJob
    {
      ... // More code here. 
    }
    

    Otro ejemplo: la entrada podría ser un diagrama de flujo de trabajo en una actividad empresarial. Cuando los usuarios cambian su flujo de trabajo empresarial, o cuando se inicia el trabajo con nuevos usuarios que tienen un flujo de trabajo diferente, es fácil volver a generar el código para el nuevo modelo.

    Cuando los requisitos cambian, las plantillas en tiempo de diseño hacen que el cambio de configuración sea más rápido y confiable. Normalmente la entrada se define en términos de requisitos comerciales, como en el ejemplo del flujo de trabajo. Esto facilita el debate sobre los cambios con los usuarios. Las plantillas en tiempo de diseño son, por consiguiente, una herramienta útil en un proceso de desarrollo ágil.

    Para crear una plantilla en tiempo de diseño, agregue un archivo de Plantilla de texto al proyecto. También puede agregar un archivo de texto sin formato y establecer su propiedad Herramienta personalizada en TextTemplatingFileGenerator.

    Para obtener más información, vea Generación de código en tiempo de diseño usando las plantillas de texto T4. Para obtener más información acerca de la sintaxis de plantillas, vea Escribir una plantilla de texto T4.

NotaNota

El término modelo se utiliza a veces para describir la lectura de los datos por una o más plantillas.El modelo puede estar en cualquier formato, en cualquier tipo de archivo o base de datos.No tiene que ser un modelo UML ni un modelo de lenguaje específico de dominio. 'El modelo únicamente indica que los datos se pueden definir en términos de conceptos del negocio, en lugar de parecerse al código.

La característica de transformación de plantilla de texto se denomina T4.

En esta sección

Vea también

Conceptos

Cómo: Generar archivos a partir de un modelo UML

Otros recursos

Generar código a partir de lenguajes específicos de dominio