2009-08-03 18 views
7

Je ne trouve pas d'exemple comment utiliser l'argument -a lorsque j'utilise TextTransform.exe pour générer du code à partir de modèles. Dans MSDN est la suite de description pour argument -a:..Récupère la valeur d'argument de TextTransform.exe dans le modèle

« spécifie un paramètre de directive processeur peut interroger pour comme Le processeur directive paire nom/valeur et l'identificateur sont facultatifs Ceci permet paramètres à être spécifié pour tout processeur de directive ou pour toute instance d'un processeur particulier . "

J'ai besoin d'un ensemble d'arguments comme une chaîne de connexion et ainsi de suite 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

MISE À JOUR: Pour être assez clair, je veux lire les paramètres directs dans le modèle.

Répondre

7

Le modèle de texte Transformation Toolkit (T4) n'est pas très bien supporté par Microsoft. Seulement quelques exemples. Si vous voulez en savoir plus, allez au Olegs Sychs blog. T4 est ici très profondément expliqué.

Après des heures à essayer d'obtenir des paramètres de TextTransform.exe dans mon modèle, j'ai trouvé une solution:

Ajouter hostspecific="true" attribut à l'élément template comme suit:

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

plus tard dans le modèle que vous pouvez appeler ResolveParameterValue comme Oleg mentionné.

Exemple:

<# 

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

#> 

Vous générateur de modèle alors appelez:

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

Après avoir généré doit être dans le fichier généré: 'someValue'

+6

Avec VS2010, passer des valeurs nulles ou des chaînes vides à l'un des deux premiers paramètres de 'Host.ResolveParameterValue (null, null," someKey ")' provoque une exception null d'argument. – CodingWithSpike

+0

La documentation [ici] (http://msdn.microsoft.com/fr-fr/library/bb126245.aspx) explique également la même solution. – LuddyPants

1

L'argument -a accepte les valeurs dans le format suivant:

<ProcessorName>!<DirectiveID>!<ParameterName> 

Ce sont aussi les paramètres de la méthode ITextTemplatingEngineHost.ResolveParameterValue dont vous avez besoin d'appeler pour obtenir une valeur de paramètre dans le code du modèle.

+1

Bonjour Oleg, merci pour la réponse. Voulez-vous dire que je peux appeler ResolveParameterValue dans mon fichier * .tt? Que devrait-on définir pour le paramètre directiveId et processorName? Pourriez-vous donner un exemple? Cordialement Anton Kalcik –