2009-08-03 12 views
7

non riesco a trovare alcuni esempi di come posso usare argomento -a quando uso TextTransform.exe per generare il codice da modelli. In MSDN seguendo descrizione per argomento -a:..Ottenere valore di argomento dal TextTransform.exe nel modello

"Specifica un parametro che un processore direttiva può ricercare per come coppia nome/valore Il processore direttiva e identificatore sono facoltativi Questo permette parametri specificare per qualsiasi processore direttiva o qualsiasi istanza di un particolare processore direttiva ".

Ho bisogno di alcuni set di argomenti come la stringa di connessione e così via nel mio modello. La mia idea era di ottenere un percorso per il file di configurazione con l'aiuto dell'argomento -a.

saluti Anton Kalcik

AGGIORNAMENTO: Per essere chiari abbastanza, voglio leggere parametri diretti a modello.

risposta

7

modello di testo Transformation Toolkit (T4) è da Microsoft non è molto ben supportato. Solo alcuni esempi Se vuoi saperne di più vai su Olegs Sychs blog. T4 è qui spiegato molto profondamente.

Dopo di ore a cercare di ottenere i parametri dal TextTransform.exe nel mio modello ho trovato una soluzione:

Aggiungi hostspecific="true" attributo template elemento come segue:

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

Più tardi, nel modello che si può chiamare ResolveParameterValue come menzionato da Oleg.

Esempio:

<# 

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

#> 

Si chiama modello di generatore così:

"C:\Program Files\Common Files\Microsoft Shared\TextTemplating\1.2\TextTransform.exe" -a !!someKey!someValue 

Dopo aver generato dovrebbe essere in file generato: 'someValue'

+6

Con VS2010, il passaggio dei valori null o della stringa vuota a uno dei primi 2 parametri di 'Host.ResolveParameterValue (null, null," someKey ")' causa un'eccezione null di argomento. – CodingWithSpike

+0

La documentazione [qui] (http://msdn.microsoft.com/en-us/library/bb126245.aspx) spiega anche la stessa soluzione. – LuddyPants

1

L'argomento -a accetta i valori nel seguente formato:

<ProcessorName>!<DirectiveID>!<ParameterName> 

Questi sono anche i parametri di ITextTemplatingEngineHost.ResolveParameterValue metodo che è necessario chiamare al fine di ottenere il valore del parametro nel codice del modello.

+1

Ciao Oleg, grazie per la risposta. Vuoi dire che posso chiamare ResolveParameterValue nel mio file * .tt? Cosa dovrebbe essere impostato per parametro directiveId e processorName? Potresti fornire qualche esempio? Cordiali saluti Anton Kalcik –

Problemi correlati