2009-08-03 10 views
7

No encuentro un ejemplo de cómo puedo usar el argumento -a cuando uso TextTransform.exe para generar código a partir de plantillas. En MSDN se siguiente descripción para el argumento -a:..Obtiene el valor de argumento de TextTransform.exe en la plantilla

"especifica un parámetro que un procesador directiva puede preguntar para como par nombre/valor El procesador directiva y el identificador son opcionales Esto permite a parámetros se especifique para cualquier procesador de directivas o cualquier instancia de de una directiva en particular procesador ".

Necesito un 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 Kalčík

ACTUALIZACIÓN: Para ser lo suficientemente clara, quiero leer los parámetros directos en plantilla.

Respuesta

7

Text Template Transformation Toolkit (T4) es de Microsoft no es muy compatible. Solo algunos ejemplos. Si quiere saber más, vaya al Olegs Sychs blog. T4 está aquí muy profundamente explicado.

Después de horas para tratar de obtener los parámetros de TextTransform.exe en mi plantilla he encontrado una solución:

Añadir hostspecific="true" atributo a template elemento de la siguiente manera:

<#@ template language="C#v3.5" hostspecific="true"#> 

Más adelante en plantilla que se puede llamar ResolveParameterValue como mencionó Oleg.

Ejemplo:

<# 

string parameterTest = Host.ResolveParameterValue(null, null, "someKey"); 
WriteLine(parameterTest); 

#> 

Usted llama generador de plantillas de modo:

"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'

+6

Con VS2010, pasar nulos o cadena vacía a cualquiera de los primeros 2 parámetros de 'Host.ResolveParameterValue (null, null," someKey ")' provoca un argumento de excepción nula. – CodingWithSpike

+0

La documentación [aquí] (http://msdn.microsoft.com/en-us/library/bb126245.aspx) también explica la misma solución. – LuddyPants

1

El argumento -a acepta valores en el siguiente formato:

<ProcessorName>!<DirectiveID>!<ParameterName> 

Estos son también los parámetros de ITextTemplatingEngineHost.ResolveParameterValue método que necesita llamar con el fin de obtener el valor del parámetro en el código de la plantilla.

+1

Hola Oleg, gracias por la respuesta. ¿Quiere decir que puedo llamar a ResolveParameterValue en mi archivo * .tt? ¿Qué debería establecerse para parameter directiveId y processorName? ¿Podría darnos algún ejemplo? Recuerdos Anton Kalcik –

Cuestiones relacionadas