juin
2009
Voici deux astuces concernant les fichiers de configuration .NET qui peuvent vous faire gagner pas mal de temps si vous utilisez les sections personnalisées.
Premièrement il existe sur codeplex un magnifique addin à VS qui permet de créer graphiquement les sections personnalisées : http://www.codeplex.com/csd
Cet outil est très bien fait, très sympas à utiliser même si toutes les possibilités des sections personnalisées ne sont pas exposées. Bref un must à avoir sous la main tout en ayant en tête qu’il faut quand même aller mettre les mains sous le capot une fois le plus gros du travail fait.
La deuxième astuce concerne l’utilisation des sections personnalisées et je doit avouer que je suis pas fier d’avoir mis plus d’une journée à debugger le truc. En effet la directive « configSections » doit être la première du fichier de configuration sous peine de voir les handlers de configuration ignorés ! Ainsi si vous écrivez cela dans le fichier de configuration :
<xml version="1.0" encoding="utf-8" >
<configuration>
<system.diagnostics>
<switches>
<add name="AppTraceSwitch" value="4"/>
</switches>
</system.diagnostics>
<configSections>
<section name="mySection" type="myType" />
</configSections>
<mySection>
bla bla bla
</mySection>
</configuration>
cela ne lèvera pas d’exception, pire cela renverra bien une instance de ConfigurationSection mais pas du type attendu, l’instance sera du type DefaultSection !
Ce comportement est du au fait que le noeud configSections doit être le premier du fichier configuration sous peine de le voir ignoré ! (Pourtant on m’a toujours dit que le xml n’était pas séquentiel et que l’on pouvait déclarer les noeud dans l’ordre que l’on voulait ).
Le code xml correct est donc :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="mySection" type="myType" />
</configSections>
<mySection>
bla bla bla </mySection>
<system.diagnostics>
<switches>
<add name="AppTraceSwitch" value="4"/>
</switches>
</system.diagnostics>
</configuration>
La ou je ne suis pas content de moi c’est que c’est indiqué (en tout petit à ma décharge ) dans la msdn : configSections (regardez bien le troisième paragraphe de la section Notes). Aller ça m’apprendra à ne pas lire toute la documentation :).
1 Commentaire + Ajouter un commentaire
Archives
- juillet 2012
- mars 2012
- février 2012
- novembre 2011
- octobre 2011
- mars 2011
- novembre 2010
- octobre 2010
- septembre 2010
- août 2010
- avril 2010
- février 2010
- janvier 2010
- novembre 2009
- octobre 2009
- septembre 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juin 2008
- mai 2008
- avril 2008
- février 2008
- mai 2007
- avril 2007
- mars 2007
- février 2007
- janvier 2007
Ne t’en veux pas trop, j’ai eu droit a la même sur le premier projet ou j’ai utilisé les enterprise libraries
Une fois qu’on s’est fait avoir, c’est bon, on y pense