Comment utiliser les modèles de génération de code T4 avec des projets VS C ++?
-
20-08-2019 - |
Question
Les fichiers de modèle T4 sont automatiquement reconnaissables par l'EDI sous les projets C #, mais je n'ai aucune idée de la façon dont ils peuvent être intégrés à des projets C ++ (autres que l'utilisation de fichiers make).
Des idées?
La solution
Les fichiers de modèle T4 peuvent être intégrés dans des projets C ++, mais cela demande un peu plus de travail qu’avec un projet C # / VB. Créez un nouveau fichier texte dans votre projet C ++ et attribuez-lui une extension .tt. Ensuite, écrivez votre modèle comme d'habitude. Un projet C ++ a ensuite besoin de travail supplémentaire pour le faire transformer les modèles. Le moyen le plus rapide et le plus rapide de le faire fonctionner était d’ajouter une étape de construction personnalisée et de l’appeler & Quot; C: \ Fichiers communs \ Fichiers communs \ Microsoft Shared \ TextTemplating \ 1.1 \ TextTransform.exe & Quot; directement. Une autre méthode que j'ai trouvée consiste à ajouter une tâche MSBuild personnalisée. Les instructions peuvent être trouvées ici
Autres conseils
MSBuild Task ne fonctionnera pas car il s’agit d’un fichier vcproj (C ++), donc vcbuild est utilisé. Le moyen le plus simple d’obtenir le tt compilé est d’ajouter une étape de construction personnalisée comme ci-dessous.
"C:\Program Files (x86)\Common Files\Microsoft Shared\TextTemplating\1.1\TextTransform.exe" -out "$(ProjectDir)\VSProject.cpp" -I "$(ProjectDir)" "$(ProjectDir)\VSProject.tt"
J'ai passé plusieurs heures à étudier la solution de tâches MSBuild ci-dessus. C'est assez bon pour le code géré, mais je ne vois pas comment l'utiliser pour C ++ (la conversion de vcproj en csproj eek est impossible)
Pour Visual Studio 2017 (et peut-être 2015?)
Les commandes répertoriées dans les autres réponses sont en partie incorrectes, car le fichier TextTransform.exe
a été déplacé vers un nouveau répertoire: le dossier racine devenv
, par exemple:
C:\Progra~1\Visual Studio 2017\Enterprise\Common7\IDE
La commande devrait maintenant être mise à jour avec les éléments suivants:
"$(DevEnvDir)TextTransform.exe" -out "$(ProjectDir)xxx.cpp" "$(ProjectDir)xxx.tt"
où xxx
est le nom de fichier de votre .tt
fichier de modèle