5 octobre 2008

Utiliser les Custom Tools dans Visual Studio

Alors déjà, qu'est ce qu'un Custom Tool ?
C'est un utilitaire sous forme de librairie (dll) qu'utilise Visual Studio afin de générer quelque chose, généralement des classes, à partir d'un fichier en entrée. Chaque fichier présent dans une solution Visual Studio (2003,2005 et 2008) propose dans sa fenêtre de propriété un champ Custom Tool.

Sur un fichier de ressources de type resx, le Custom Tool ResXFileCodeGenerator est défini d'office. Son rôle est de générer une classe contenant le code pour accéder aux différentes ressouces déclarées dans le fichier XML. Voici une liste regroupant les plus populaires :
  • MSDiscoCodeGenerator : Génère une classe proxy permettant d'accéder simplement à un web service à partir de son fichier wsdl
  • WCF Proxy Generator : A partir d'un fichier .svcmap, ce custom tool génère la classe d'accès au service
  • SettingsSingleFileGenerator et ResXFileCodeGenerator : Génère une classe proxy vers un fichier de configuration ou de ressources
  • EntityModelCodeGenerator : Génère l'ensemble des classes d'accès aux données (Entity Framework) à partir d'un fichier edmx
  • MSLinqToSQLGenerator : A l'instar de EntityModelCodeGenerator, ce custom tool s'occupe du fichier XML (.dbml) créé par le designer de LinQ to SQL.
  • MSDataSetGenerator : Créé un ensemble de fichier XML et de classes définissant un Dataset, à partir d'un fichier XSD
Les Custom Tools permettent de gagner un temps conséquent (plusieurs milliers de lignes de code peuvent être générées d'une passe) et garantissent une certaine qualité dans le code produit. Il est à noter que cela fonctionne que dans un seul sens (unidirectionnel). Modifiez un fichier généré par un Custom Tool et celui-ci sera écrasé à la prochaine génération.
Il est aussi intéressant de savoir que l'on peut redéfinir le Custom Tool attaché à n'importe quel fichier. Du coup, si le code créé par un Custom Tool ne vous plait pas, rien ne vous empêche de créer le votre et de l'attacher au fichier source. Sur le site suivant, vous trouverez une démonstration avec le WCF Proxy Generator : http://blogs.msdn.com/pedram/archive/2007/08/10/customising-wcf-proxy-generation-in-visual-studio-2008.aspx.
Alors comment savoir si vous avez besoin de créer votre propre Custom Tool ? Et bien, si vous avez un ou plusieurs fichiers XML dans vos projets C# ou VB .Net, et que vous devez créer du code pour accéder aux informations stockées dedans, un Custom Tool adapté vous permettra de vous passer de cette tâche un peu fastidieuse. Je les ai d'ailleurs utilisés pour un projet Sharepoint. Une solution typique WSS ou MOSS contient bien souvent un nombre impressionnant de fichiers XML (features, fields, ONET.XML, etc ...), et il est souvent utile de pouvoir accéder facilement à certaines de leurs informations.
Voici quelques liens si vous souhaitez créer votre propre Custom Tool :

1 commentaire:

Mohamed Sanogo a dit…

Bonjour Paul ,

Je développe un service Web sous Microsoft Dynamics AX 2012 pour le compte d'une application client développer en C# sous visual studio 2010.
j'ai une incompatibilité sur le nom des attributs contenus dans mes classes générer par le WCF proxy Generator. Il prefixe le nom de mes attributs par "parm". J'aimerais comment le forcer a à restituer exactement le nom de mes attributs.
Cordialement.