Mam szablon T4, który jest używany z TextTemplatingFilePreprocessor do generowania klasy, którą następnie można użyć do wygenerowania danych wyjściowych szablonu.Czy w szablonach T4 można używać warunkowych symboli kompilacji
Na początku szablonu T4 importuję kilka przestrzeni nazw. Na przykład.
<#@ import namespace="Company.ProductX.Widgets" #>
<#@ import namespace="Company.ProductX.Services" #>
//...
Chciałbym użyć Preprocessor Directives aby przełączyć się na ten przywóz z innego zestawu nazw (które świadczą te same interfejsy, ale różniących funkcjonalność ProduktX). Na przykład.
<#
#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
#>
W powyższym przykładzie import wydaje się tworzyć odpowiednie instrukcje użycia w klasie, niezależnie od dyrektywy preprocesora. Na przykład.
Czy istnieje inny sposób korzystania z Preprocesorów w szablonach T4, aby wpłynąć na sam szablon, a nie tylko na wynik szablonu?
Używamy takich szablonów nagłówka, aby to zrobić i stwierdziliśmy, że działa całkiem dobrze. Nie ma sposobu na wstawienie warunków warunkowych wokół dyrektyw wbudowanych w produkt. – GarethJ
Dzięki za odpowiedź. To brzmi jak dobra robota. Kiedy już to zrobię, oznaczę to jako rozwiązanie. –