Voici un premier post sur mon blog fraichement nettoyé.

Si vous avez travaillé sur des projets web, vous avez surement utilisé la fonctionnalité qui permet d’avoir une configuration différente (web.config) selon le mode de compilation (par défaut DEBUG ou RELEASE). Si ce sujet vous interresse je vous invite a lire ceci : MSDN (en anglais, VF : MSDN via Translator attention, traduction un peu limite)

A l’origine cette fonctionnalité n’est pas présente “out of the box” pour les autres types de projets. Malgrè tout, il est possible d’implémenter le même pattern en utilisant un AddIn pour Visual Studio : “Configuration Transform”. Voici un exemple d’utilisation sur un projet console.

Nous démarrons donc à partir d’un projet qui a un paramètre (Setting) et un fichier de configuration unique (app.config).

image

Pour ajouter des paramètres spécifiques pour les modes de compilation DEBUG/RELEASE, nous selectionons le fichier “App.config”, avec le menu contextuel (click droit) et on choisi “Add Config Transforms”.

image

Cette opération ajoutera 2 fichiers attaché au App.config, un par configuration de compilation.

image Message étrange “pas de changement” mais ca ajoute bien les fichiers :

image

Si on ouvre le fichier Release, on peut constater qu’il est vide. Si par exemple vous avez un paramètre “SomeSpecial” qui doit avoir une valeur différente pour le mode Release, vous pouvez y ajouter le code suivant :

   1: <?xml version="1.0"?>
   2: <!-- For more information on using app.config transformation
   3:       visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
   4:  <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
   5:    <applicationSettings>
   6:      <WpfApplication1.Properties.Settings>
   7:        <setting name="SomeSpecial" serializeAs="String"
   8:                 xdt:Transform="Replace" xdt:Locator="Match(name)">
   9:          <value>Something for RELEASE</value>
  10:        </setting>
  11:      </WpfApplication1.Properties.Settings>
  12:    </applicationSettings>
  13:  </configuration>

Dans le code ci-dessus, la ligne 7 permet de préciser que la node “setting” doit être remplacé pour celle dont le “name” correspond à “SomeSpecial”. Ceci permet au compilateur en mode Release de remplacer la valeur dans le app.config généré.

Grâce à cette fonctionnalité, vous pouvez vous assurer de ne pas déployer en production de mauvais paramètres, ceux du mode Debug par exemple.

Une dernière chose :

En ajoutant des modèles de configuration, on peut ainsi avoir des générations comme ceci :

image

Le “Add Config Transform” ajoute donc les nouveaux fichiers pour les configurations ajoutées :

image

Dans mon cas, j'ai utilisé ceci pour une application client/serveur, le serveur étant un paramètre de l'application : celui de développement n'est bien sur pas le même que celui de production ou celui de l’environnement de validation (Integration, Quality, …)

Merci à Bruno pour l'info, source : ElBruno