Ottieni il valore dell'argomento da TextTransform.exe nel modello
-
10-07-2019 - |
Domanda
Non riesco a trovare alcuni esempi come posso usare l'argomento -a quando utilizzo TextTransform.exe per generare codice dai modelli. In MSDN è la seguente descrizione dell'argomento -a:
" Specifica un parametro che una direttiva il processore può richiedere come a coppia nome / valore. La direttiva il processore e l'identificatore sono opzionali. Ciò consente di specificare i parametri per qualsiasi processore di direttiva o qualsiasi istanza di una direttiva particolare . Processore "
Ho bisogno di alcuni argomenti come la stringa di connessione e così via nel mio modello. La mia idea era di ottenere un percorso al file di configurazione con l'aiuto dell'argomento -a.
Saluti Anton Kalcik
AGGIORNAMENTO: Per essere abbastanza chiaro, voglio leggere i parametri direttamente nel modello.
Soluzione
Text Template Transformation Toolkit (T4) di Microsoft non è molto ben supportato. Solo alcuni esempi. Se vuoi saperne di più vai al blog Olegs Sychs . T4 è qui spiegato in modo molto approfondito.
Dopo alcune ore nel tentativo di ottenere parametri da TextTransform.exe nel mio modello, ho trovato una soluzione:
Aggiungi l'attributo hostspecific = " true "
all'elemento template
come segue:
<#@ template language="C#v3.5" hostspecific="true"#>
Più avanti nel modello puoi chiamare ResolveParameterValue
come menzionato da Oleg.
Esempio:
<#
string parameterTest = Host.ResolveParameterValue(null, null, "someKey");
WriteLine(parameterTest);
#>
Chiami il generatore di modelli così:
"C:\Program Files\Common Files\Microsoft Shared\TextTemplating\1.2\TextTransform.exe" -a !!someKey!someValue
Dopo la generazione dovrebbe essere nel file generato: 'someValue'
Altri suggerimenti
L'argomento -a accetta valori nel seguente formato:
<ProcessorName>!<DirectiveID>!<ParameterName>
Questi sono anche i parametri di ITextTemplatingEngineHost .ResolveParameterValue che devi chiamare per ottenere il valore del parametro nel codice modello.