J'ai un modèle T4 qui génère des classes à partir d'un fichier xml. Comment puis-je ajouter une dépendance entre le fichier xml et le fichier modèle de sorte que lorsque le fichier xml est modifié, le modèle est réexécuté automatiquement sans choisir "Exécuter outil personnalisé" dans le menu contextuel?Comment ajouter une dépendance à un fichier arbitraire à un modèle T4?
Répondre
Je ne crois pas que T4 supporte la transformation automatique de modèle basée sur une dépendance externe. Je suis d'accord avec Marc - si vous n'avez qu'un seul fichier externe, vous pouvez créer un "outil personnalisé" personnalisé pour votre fichier XML ou simplement utiliser ttxgen. Cependant, je ne pense pas que cette approche évolue vers un scénario où le modèle t4 dépend de plus d'un fichier. Vous devrez peut-être créer un package Visual Studio pour gérer cela.
Combien de temps l'outil prend-il pour s'exécuter? Une option paresseuse pourrait être d'éditer simplement le csproj de sorte qu'il toujours exécute l'outil pendant la construction (sans doute via <Exec ... />
ou un fichier targets
personnalisé) - bien sûr, cela dépend de sa rapidité d'exécution.
Une autre manière serait d'écrire un shim qui fonctionne comme "Custom Tool" dans VS, et appelle simplement l'exe existant (ou autre) avec les bons arguments. Ce n'est pas trivial, mais faisable (see here) - Je crois que ça se joue plutôt bien avec la détection de changement. C'est en fait sur ma liste de choses à faire pour un projet en cours, donc je vais le savoir assez tôt ...
Avez-vous essayé d'utiliser <#@ xsd?
Vous pouvez utiliser AutoTT Extension Visual Studio.
Cette extension permet de configurer des déclencheurs qui exécuteront un modèle T4.
L'un des déclencheurs possibles est un changement de fichier. Dans l'exemple de fichier de configuration dans la page AutoTT, l'expression régulière pour les déclencheurs correspond à tous les fichiers dans les dossiers spécifiés (Contrôleurs, Contenu), mais vous pouvez le modifier pour qu'il s'exécute uniquement avec un fichier spécifique.
Chirpy est une autre option pour ce faire. Et aussi T4 Regenerator, qui le fait d'une manière différente.
Existe-t-il un moyen d'utiliser ttxgen de VS2010? –