Tengo una plantilla T4 que se usa con TextTemplatingFilePreprocessor para generar una clase que luego puedo usar para generar el resultado de la plantilla.Se pueden usar símbolos de compilación condicional dentro de plantillas T4
Al comienzo de la plantilla T4 importo varios espacios de nombres. P.ej.
<#@ import namespace="Company.ProductX.Widgets" #>
<#@ import namespace="Company.ProductX.Services" #>
//...
Me gustaría utilizar Preprocessor Directives para cambiar a cabo estas importaciones con otro conjunto de espacios de nombres (que proporcionan las mismas interfaces, pero que difieren funcionalidad a ProductX). P.ej.
<#
#if(ProductX)
{
#>
<#@ import namespace="Company.ProductX.Widgets" #>
<#@ import namespace="Company.ProductX.Services" #>
//...
<#
}
#endif
#>
<#
#if(ProductY)
{
#>
<#@ import namespace="Company.ProductY.Widgets" #>
<#@ import namespace="Company.ProductY.Services" #>
//...
<#
}
#endif
#>
Con el ejemplo anterior las importaciones parecen crear las correspondientes mediante instrucciones en la clase, independientemente de la directiva de preprocesador. P.ej.
using Company.ProductX.Widgets
using Company.ProductX.Services
using Company.ProductY.Widgets
using Company.ProductY.Services
¿Hay otra manera de utilizar Preprocesadores en las plantillas T4 para afectar a la propia plantilla en lugar de sólo la salida de la plantilla?
Usamos tales plantillas de "encabezado" para hacer esto y encontramos que funciona bastante bien. No hay forma de insertar condicionales en torno a las directivas integradas en el producto. – GarethJ
Gracias por la respuesta. Esto suena como un buen trabajo. Una vez que lo tenga funcionando, lo marcaré como la solución. –