4 votes

Comment déployer les fichiers d'inclusion T4 avec les paquets NuGet

J'ai quelques fichiers d'inclusion T4 que je veux réutiliser dans plusieurs projets. J'ai donc créé un paquet NuGet et placé les fichiers dans le dossier Tools du paquet. Ils sont maintenant installés dans le répertoire packages\PackageName.x.x.x\Tools et je peux ajouter une directive include dans mes fichiers T4 dans le projet.

Mais l'inconvénient de cette méthode est qu'il y a un numéro de version dans le chemin qui changera lorsque je créerai de nouvelles versions du paquet. Cela m'obligerait à mettre à jour toutes les directives include dans le projet.

Quelqu'un connaît-il un indice pour une bonne approche de ce problème ?

2voto

Henk J Meulekamp Points 526

Si ces modèles T4 sont censés générer du code à l'intérieur des bibliothèques, vous pourriez les placer dans le répertoire du contenu.

Ils seront ajoutés à la bibliothèque avec la référence au paquet nuget. Renommez donc tools en content (ou ajoutez un nouveau dossier content) et tout devrait bien se passer. Vous pouvez également ajouter des sous-dossiers à ce dossier. Ou mettre des fichiers .cs à l'intérieur.

Voir : http://docs.nuget.org/docs/reference/nuspec-reference

2voto

GrahamD Points 144

La directive d'inclusion T4 ne reconnaît pas les propriétés de msbuild, mais celle de l'assemblage le fait. Vous pouvez donc utiliser une classe de modèle de base et référencer un assemblage à partir de votre paquet NuGet.

Avec NuGet 2.5 (probablement pas disponible au moment de l'article original), vous pouvez créer un fichier msbuild .props. Assignez $(MSBuildThisFileDirectory) combiné au chemin relatif de l'assembly à une nouvelle propriété msbuild. La nouvelle propriété peut alors être utilisée dans le modèle T4 des projets qui utilisent le package NuGet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X