我有一个T4模板,与TextTemplatingFilePreprocessor一起使用来生成一个类,然后我可以使用它生成模板的输出。可以在T4模板中使用条件编译符号
在T4模板的开始,我导入了几个名称空间。例如。
<#@ import namespace="Company.ProductX.Widgets" #>
<#@ import namespace="Company.ProductX.Services" #>
//...
我想使用Preprocessor Directives切换出这些进口与另一组命名空间(其提供相同的接口,但不同的功能,以了ProductX)的。例如。
<#
#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
#>
对于上述示例,导入似乎会在类中创建相应的using语句,而不管预处理器指令如何。例如。
using Company.ProductX.Widgets
using Company.ProductX.Services
using Company.ProductY.Widgets
using Company.ProductY.Services
是否有另一种方法使用T4模板中的预处理器来影响模板本身,而不仅仅是模板输出?
我们使用这样的'header'模板来做到这一点,并发现它工作得很好。没有办法在产品内置的指令周围插入条件。 – GarethJ
感谢您的回答。这听起来像一个很好的工作。一旦我得到它的工作,我会将其标记为解决方案。 –