Obtener el valor del argumento de TextTransform.exe en la plantilla
-
10-07-2019 - |
Pregunta
No puedo encontrar algún ejemplo de cómo puedo usar el argumento -a cuando uso TextTransform.exe para generar código a partir de plantillas. En MSDN está la siguiente descripción para el argumento -a:
" Especifica un parámetro que una directiva el procesador puede consultar como par nombre / valor. La directiva El procesador y el identificador son opcionales. Esto permite especificar parámetros para cualquier procesador directivo o cualquier instancia de una directiva particular procesador. "
Necesito algún conjunto de argumentos como cadena de conexión, etc. en mi plantilla. Mi idea era obtener una ruta al archivo de configuración con la ayuda del argumento -a.
Saludos Anton Kalcik
ACTUALIZACIÓN: para ser lo suficientemente claro, quiero leer los parámetros directamente en la plantilla.
Solución
El Kit de herramientas de transformación de plantillas de texto (T4) es de Microsoft y no es muy compatible. Solo unos pocos ejemplos. Si desea obtener más información, vaya al blog Olegs Sychs . T4 se explica aquí muy profundamente.
Después de horas para intentar obtener parámetros de TextTransform.exe en mi plantilla, encontré una solución:
Agregue el atributo hostspecific = " true "
al elemento template
de la siguiente manera:
<#@ template language="C#v3.5" hostspecific="true"#>
Más adelante en la plantilla, puede llamar a ResolveParameterValue
como mencionó Oleg.
Ejemplo:
<#
string parameterTest = Host.ResolveParameterValue(null, null, "someKey");
WriteLine(parameterTest);
#>
Llama al generador de plantillas, entonces:
"C:\Program Files\Common Files\Microsoft Shared\TextTemplating\1.2\TextTransform.exe" -a !!someKey!someValue
Después de generar debe estar en el archivo generado: 'someValue'
Otros consejos
El argumento -a acepta valores en el siguiente formato:
<ProcessorName>!<DirectiveID>!<ParameterName>
Estos también son los parámetros de ITextTemplatingEngineHost .ResolveParameterValue método al que debe llamar para obtener el valor del parámetro en el código de plantilla.