Obtenir la valeur d'argument de TextTransform.exe dans le modèle
-
10-07-2019 - |
Question
Je ne trouve pas d'exemple qui explique comment utiliser l'argument -a lorsque j'utilise TextTransform.exe pour générer du code à partir de modèles. Dans MSDN , la description suivante de l'argument -a:
" Spécifie un paramètre qu'une directive le processeur peut demander en tant que paire nom / valeur. La directive le processeur et l'identifiant sont facultatifs. Cela permet aux paramètres d'être spécifiés pour tout processeur de directive ou tout exemple d'une directive particulière processeur. "
J'ai besoin d'un ensemble d'arguments comme une chaîne de connexion, etc. dans mon modèle. Mon idée était d’obtenir un chemin vers le fichier de configuration à l’aide de l’argument -a.
Cordialement Anton Kalcik
UPDATE: Par souci de clarté, je veux lire les paramètres directement dans le modèle.
La solution
La boîte à outils de transformation de modèles de texte (T4) n’est pas très bien supportée par Microsoft. Quelques exemples seulement. Si vous souhaitez en savoir plus, consultez le le blog Olegs Sychs . Le T4 est ici très expliqué.
Après des heures passées à essayer d'obtenir des paramètres de TextTransform.exe dans mon modèle, j'ai trouvé une solution:
Ajoutez l'attribut hostspecific = " true & <; code> à l'élément
template
comme suit:
<#@ template language="C#v3.5" hostspecific="true"#>
Plus tard dans le modèle, vous pourrez appeler ResolveParameterValue
comme indiqué par Oleg.
Exemple:
<#
string parameterTest = Host.ResolveParameterValue(null, null, "someKey");
WriteLine(parameterTest);
#>
Vous appelez un générateur de modèle pour:
"C:\Program Files\Common Files\Microsoft Shared\TextTemplating\1.2\TextTransform.exe" -a !!someKey!someValue
Après la génération devrait être dans le fichier généré: 'uneValeur' ??
Autres conseils
L'argument -a accepte les valeurs au format suivant:
<ProcessorName>!<DirectiveID>!<ParameterName>
Ce sont également les paramètres de ITextTemplingEngineHost Méthode .ResolveParameterValue que vous devez appeler pour obtenir la valeur du paramètre dans le code du modèle.