Comment ajouter une dépendance à un fichier arbitraire dans un modèle T4?

StackOverflow https://stackoverflow.com/questions/280748

  •  07-07-2019
  •  | 
  •  

Question

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 afin que, lorsque le fichier XML est modifié, le modèle soit réexécuté automatiquement sans choisir & "Exécuter l'outil personnalisé &"; dans le menu contextuel?

Était-ce utile?

La solution

Je ne crois pas que T4 prenne en charge la transformation automatique de modèles 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é & "; Outil personnalisé &"; pour votre fichier XML ou utilisez simplement ttxgen . Cependant, je ne pense pas que cette approche évolue jusqu'à un scénario où le modèle t4 dépend de plusieurs fichiers. Vous devrez peut-être créer un package Visual Studio pour gérer cela.

Autres conseils

Combien de temps l'outil prend-il pour s'exécuter? Une option paresseuse pourrait consister simplement à éditer le fichier csproj de sorte qu'il utilise toujours lors de la création (probablement via <Exec ... /> ou un fichier personnalisé targets) - bien entendu, cela dépend de son exécution rapide.

Une autre solution consisterait à écrire une cale qui fonctionne comme & "Outil personnalisé &"; dans VS, et appelle simplement l'exe existant (ou autre) avec les arguments appropriés. Pas banal, mais faisable ( voir ici ) - Je crois Ceci est censé jouer assez bien avec la détection de changement. C’est en fait sur ma liste de choses à faire pour un projet en cours, donc je le saurai assez tôt ...

Vous pouvez utiliser AutoTT , une 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 de la page AutoTT, l'expression régulière des déclencheurs correspond à tous les fichiers des dossiers spécifiés (Contrôleurs, Contenu), mais vous pouvez le modifier pour qu'il ne s'exécute qu'avec un fichier spécifique.

Chirpy est une autre option pour ce faire. Et aussi Régénérateur T4 , qui le fait d'une manière différente.

Avez-vous essayé d'utiliser < # @ xsd ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top