Artículo
|
Plantillas de Generación de Código(T4): Introducción |
Definición
Una Plantilla de Generación de Código es una forma rápida y sencilla de construir código a través de bloques de texto y código escrito en lenguaje C# o VB.
Este tipo de plantillas se introdujeron con Visual Studio 2005.
Podríamos hablar de dos tipos de plantillas: procesadas en tiempo de diseño o procesadas en tiempo de ejecución.
¿Cómo se usan en Visual Studio?
Para poder utilizar plantillas T4 con una versión inferior a VS 2010, lo podremos realizar a través
1) Agregar Nuevo Archivo
2) Fichero de Texto
3) Renombrar la extension de Txt a TT.
4) Pulsar Aceptar a la advertencia que nos indicará: “Ejecutando esta plantilla de texto podemos dañar nuestro PC…”
Con el propio Visual Studio 2010, se pueden agregar directamente sin necesidad de renombrar la extensión.
¿Por dónde empezar?
Las plantillas van a estar formadas por:
- Directivas.
- Bloques de Texto
- Bloques de Código
Directivas
Para definir el código que va a generar la plantilla vamos a comenzar hablando de las directivas que vamos a utilizar a la hora de crear una plantilla y como se incluye cada una.
La forma de agregar una directiva a una plantilla se realiza a través de:
Directiva Template:
Esta directiva va a indicar a Visual Studio como se va a procesar el código incluido en la plantilla.
Las opciones de esta directiva son:
- Language: Código en el que va a estar escrita la plantilla. Sus posibles valores son:
* C# Valor por defecto
* VB
- Culture: Valor de la cultura.
- Debug: Va a permitir detectar donde se produce un fallo en el caso de suceder. El valor por defecto es “false”.
- HostSpecific: Va a permitir, si su valor es “True”, acceder a las propiedades de Visual Studio. El valor por defecto es “false”.
Ejemplo de utilización:
Directiva OutPut:
Esta directiva va a ser utilizada para indicar la extensión del fichero que va a generar la plantilla.
Las opciones de esta directiva son:
- Extension: nos permite definir la extensión completa que vamos a utilizar por ejemplo: “.cs”, “.htm”…
- Encoding: nos permite indicar la codificación utilizada.
Ejemplo de utilización:
Directiva Assembly:
Esta directiva se utiliza para referenciar a una DLL y poder ser utilizada. Esta directiva no es necesario que se utilice con las plantillas procesadas en tiempo de ejecución si ya existen las referencias indicadas dentro del proyecto.
Las opciones de esta directiva son:
- Name: Nombre de la DLL que se va a incluir.
Ejemplo de utilización:
Directiva Import:
Esta directiva se va a encargar de incluir los espacios de nombre necesarios para la correcta generación del código de la plantilla.
Las opciones de esta directiva son:
- Namespace: Espacio de nombres que se va a incorporar.
Directiva Include:
Esta directiva va a permitir la inclusión de texto de otro fichero dado.
Las opciones de esta directiva son:
- File: Nombre del fichero a incluir.
Ejemplo de utilización:
Directiva Parameter:
Esta directiva va a ser utilizada para definir parámetros que podrán ser enviados a la plantilla desde el contexto de Ejecución. El uso de esta directiva está pensado para las plantillas procesadas en tiempo de ejecución.
Las opciones de esta directiva son:
- Type: Es el tipo de dato del parámetro.
- Name: Nombre del parámetro.
Ejemplo de utilización:
Bloques de Texto
Los bloques de Texto van a ser lineas que se van a incorporar al resultado de la plantilla tal y como se escriban en la plantilla.
Ejemplo de Plantilla:
Resultado generado por la plantilla anterior:
Bloques de Código
Los bloques de código van a ser un conjunto de sentencias que pueden ser alternados con los bloques de texto, y van a ser procesados para generar el fichero resultante.
Podríamos dividir los bloques de código en tres tipos:
Bloques Normales
Son fragmentos de código que van a ser interpretados y van a generar una cadena de texto que se va a incluir en el fichero generado por la plantilla.
Para utilizar este tipo de bloques será necesario delimitarlo por los caracteres: “<#” y “#>”.
Ejemplo de Plantilla:
Resultado generado por la plantilla anterior:
Bloques de Expresión
Este tipo de fragmentos de código van a servir para representar el resultado de una operación o de una función.
Para delimitar estos bloques se utilizan los caracteres: “<#=” y “#>”.
En los ejemplos anteriores se muestra un ejemplo de su utilización.
Bloques de Clase
Estos bloques de código se van a utilizar para encapsular funciones creadas en la plantilla para generar mas sintaxis.
Para delimitar estos bloques se utilizan los caracteres: “<#+” y “#>”.
Ejemplo de Plantilla:
Resultado generado por la plantilla anterior:
Fuentes:
MSDN: http://msdn.microsoft.com/en-us/library/bb126445.aspx
Una Plantilla de Generación de Código es una forma rápida y sencilla de construir código a través de bloques de texto y código escrito en lenguaje C# o VB.
Este tipo de plantillas se introdujeron con Visual Studio 2005.
Podríamos hablar de dos tipos de plantillas: procesadas en tiempo de diseño o procesadas en tiempo de ejecución.
¿Cómo se usan en Visual Studio?
Para poder utilizar plantillas T4 con una versión inferior a VS 2010, lo podremos realizar a través
1) Agregar Nuevo Archivo
2) Fichero de Texto
3) Renombrar la extension de Txt a TT.
4) Pulsar Aceptar a la advertencia que nos indicará: “Ejecutando esta plantilla de texto podemos dañar nuestro PC…”
Con el propio Visual Studio 2010, se pueden agregar directamente sin necesidad de renombrar la extensión.
¿Por dónde empezar?
Las plantillas van a estar formadas por:
- Directivas.
- Bloques de Texto
- Bloques de Código
Directivas
Para definir el código que va a generar la plantilla vamos a comenzar hablando de las directivas que vamos a utilizar a la hora de crear una plantilla y como se incluye cada una.
La forma de agregar una directiva a una plantilla se realiza a través de:
<#@ Directiva [Opciones..] #>
Directiva Template:
Esta directiva va a indicar a Visual Studio como se va a procesar el código incluido en la plantilla.
Las opciones de esta directiva son:
- Language: Código en el que va a estar escrita la plantilla. Sus posibles valores son:
* C# Valor por defecto
* VB
- Culture: Valor de la cultura.
- Debug: Va a permitir detectar donde se produce un fallo en el caso de suceder. El valor por defecto es “false”.
- HostSpecific: Va a permitir, si su valor es “True”, acceder a las propiedades de Visual Studio. El valor por defecto es “false”.
Ejemplo de utilización:
<#@ template [language=“C#”]
Directiva OutPut:
Esta directiva va a ser utilizada para indicar la extensión del fichero que va a generar la plantilla.
Las opciones de esta directiva son:
- Extension: nos permite definir la extensión completa que vamos a utilizar por ejemplo: “.cs”, “.htm”…
- Encoding: nos permite indicar la codificación utilizada.
Ejemplo de utilización:
<#@output extension=“.cs”#>
Directiva Assembly:
Esta directiva se utiliza para referenciar a una DLL y poder ser utilizada. Esta directiva no es necesario que se utilice con las plantillas procesadas en tiempo de ejecución si ya existen las referencias indicadas dentro del proyecto.
Las opciones de esta directiva son:
- Name: Nombre de la DLL que se va a incluir.
Ejemplo de utilización:
<#@ Assembly Name=“System.Xml.dll”#>
Directiva Import:
Esta directiva se va a encargar de incluir los espacios de nombre necesarios para la correcta generación del código de la plantilla.
Las opciones de esta directiva son:
- Namespace: Espacio de nombres que se va a incorporar.
<#@ import namespace=“System”#>
Directiva Include:
Esta directiva va a permitir la inclusión de texto de otro fichero dado.
Las opciones de esta directiva son:
- File: Nombre del fichero a incluir.
Ejemplo de utilización:
<#@ include file=“File.txt” #>
Directiva Parameter:
Esta directiva va a ser utilizada para definir parámetros que podrán ser enviados a la plantilla desde el contexto de Ejecución. El uso de esta directiva está pensado para las plantillas procesadas en tiempo de ejecución.
Las opciones de esta directiva son:
- Type: Es el tipo de dato del parámetro.
- Name: Nombre del parámetro.
Ejemplo de utilización:
<#@ parameter type=“System.Int32” name=“Repeticiones” #>
Bloques de Texto
Los bloques de Texto van a ser lineas que se van a incorporar al resultado de la plantilla tal y como se escriban en la plantilla.
Ejemplo de Plantilla:
<#@ template debug=“true” language=“C#” #>
<#@ output extension=“.cs” #>
using System;
namespace NameSpace{
class MyClas{ }
}
Resultado generado por la plantilla anterior:
using System;
namespace NameSpace{
class MyClas{ }
}
Bloques de Código
Los bloques de código van a ser un conjunto de sentencias que pueden ser alternados con los bloques de texto, y van a ser procesados para generar el fichero resultante.
Podríamos dividir los bloques de código en tres tipos:
Bloques Normales
Son fragmentos de código que van a ser interpretados y van a generar una cadena de texto que se va a incluir en el fichero generado por la plantilla.
Para utilizar este tipo de bloques será necesario delimitarlo por los caracteres: “<#” y “#>”.
Ejemplo de Plantilla:
<#@ template debug=“true” language=“C#” #>
<#@ output extension=“.cs” #>
using System;
namespace NameSpace{
class MyClas{
<#
for (int contador=0;contador<3;contador++)
{
#>
public void Metodo<#= contador #>()
{
//Ejemplo
}
<#
}
#>
}
}
Resultado generado por la plantilla anterior:
using System;
namespace NameSpace{
class MyClas{
public void Metodo0()
{
//Ejemplo
}
public void Metodo1()
{
//Ejemplo
}
public void Metodo2()
{
//Ejemplo
}
}
}
Bloques de Expresión
Este tipo de fragmentos de código van a servir para representar el resultado de una operación o de una función.
Para delimitar estos bloques se utilizan los caracteres: “<#=” y “#>”.
En los ejemplos anteriores se muestra un ejemplo de su utilización.
Bloques de Clase
Estos bloques de código se van a utilizar para encapsular funciones creadas en la plantilla para generar mas sintaxis.
Para delimitar estos bloques se utilizan los caracteres: “<#+” y “#>”.
Ejemplo de Plantilla:
<#@ template debug=“false” hostspecific=“false” language=“C#” #>
<#@ output extension=“.cs” #>
<#@ import namespace=“System” #>
using System;
namespace MiEspacio
{
public class MyClas
{
<#
for (int contador=1;contador<=4;contador++)
{
#>
public void <#= Escribir(String.Format(“Metodo{0}”,contador)) #>()
{
//Ejemplo
}
<#
}
#>
}
}
<#+ string Escribir(string Cadena)
{
return Cadena;
}
#>
Resultado generado por la plantilla anterior:
using System;
namespace MiEspacio
{
public class MyClas
{
public void Metodo1()
{
//Ejemplo
}
public void Metodo2()
{
//Ejemplo
}
public void Metodo3()
{
//Ejemplo
}
public void Metodo4()
{
//Ejemplo
}
}
}
Fuentes:
MSDN: http://msdn.microsoft.com/en-us/library/bb126445.aspx
![]() |
Publicado por: Javier Torrecilla |
|
|
Comentarios
Últimas noticias
· factura
Últimos artículos














































