Bonjour
Je me suis mis à .NET 4, il y a peu de temps... j'ai découvert Entity et aussi une extension Visual Studio pour générer des objets POCO (ici). J'ai du même coup découvert les fichiers d'extension .tt qui génère ces fichiers POCO. J'ai même trouvé une page qui explique comment personnaliser ces fameux fichiers .tt pour ajouter l'attribut MetadataType aux classes POCO (ici). Il explique même qu'en copiant le fichier .tt et en faisant 2, 3 modifs, on peut générer automatiquement les fichiers MetaData associés.
Du coup, j'me suis dit :
- c'est génial !
- je vais créer un fichier ressources .resx avec les libellés de chaque champs POCO.
- je vais modifier le fichier .tt qui génère mes fichiers MetaData pour ajouter à chaque champs l'attribut DisplayName avec la valeur de la ressource.
Le but étant de :
- centraliser tous mes libellés à un seul endroit
- effectuer une correction de libellés qui soit directement répercutée sur l'ensemble des fichiers MetaData qui utilisent ce libellé.
- exactement comme lorsqu'on modifie le fichier .edmx qui se répercute directement sur les fichiers POCO.
Mon problème :
- Dans le fichier .tt, le code ne connait pas la ressource que j'ai créé à la racine de mon projet.
Debug :
- Lorsque j'affiche le variable Environment.CurrentDirectory dans un fichier aspx de mon projet, j'obtiens :
- Lorsque j'affiche la variable Environment.CurrentDirectory dans les fichiers générés via le fichier .tt, j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part D:\dossier1\dossier2\Projects\MonProjet\bin\Debug
Il est donc normal que l'environnement d'exécution des fichiers .tt ne connaissent pas mon fichier ressources.
Code : Sélectionner tout - Visualiser dans une fenêtre à part D:\Visual Studio 2010\Common7\IDE
Du coup, j'me suis dit :
- no problem ! puisque le fichier .tt initial arrive à récupérer le fichier .edmx de mon projet pour générer les fichiers POCO why not me ?
- j'ai juste à récupérer le fichier ressource de mon projet, le charger via la classe ResXResourceReader et atteindre mon but.
Et là c'est le drame :
1/ je n'arrive même pas à récupérer le dossier de mon projet où se trouve mon fichier .resx
2/ en me disant que je trouverais une solution pour le 1/ plus tard, j'ai mis le chemin en dure
3/ j'ai tenté de charger le fichier .resx mais l'environnement d'exécution du fichier .tt ne connait pas System.Windows.Forms.ResXResourceReader...
4/ je ne sais pas comment ajouter une référence à System.Windows.Forms.dll dans D:\Visual Studio 2010\Common7\IDE
Quelqu'un a-t-il déjà rencontré ce problème et trouvé une solution ?
Bonne journée,
Gat-
Partager