Parmi toutes les nouveautés de la version 4.0 d’ASP.NET, la possibilité d’avoir des fichiers de configuration (Web.config) par type de build (Debug, Release…) est tout simplement excellente !
Il n’est plus nécessaire d’avoir son fichier Web.config en local avec sa connexion à la base de données de sa machine, et un autre fichier que l’on modifie sur le serveur qui contient la chaîne de connexion à la base de données de production. Lorsque vous créez une application ASP.NET avec le .NET Framework 4.0, vous aurez un fichier Web.config qui contient votre chaîne de connexion à la base de données locale, et toutes les informations dont vous avez besoin (AppSettings…).
Prenons l’exemple d’un fichier de configuration qui contient la chaîne de connexion suivante :

Ce fichier contient également deux sous-fichiers joints :

Le fichier Web.Debug.config est utilisé lorsque l’on est en mode Debug, et logiquement, le fichier Web.Release.config est utilisé en mode Release. Bien sûr, si vous avez une chaîne de développement plus complexe, à savoir des environnements de staging, de test… vous pouvez créer ces modes dans le Configuration Manager, dans le menu Build | Configuration Manager.

Ces fichiers dédiés à un environnement de configuration est différent du fichier de base. En effet, un fichier de configuration sera généré en prenant le fichier de base (Web.config) puis en lui appliquant une série de transformation XML Document Transform (XDT).

Dans notre exemple, je vais remplacer (xdt:Transform=”Replace”) la chaîne de connexion à la base de données (champs ‘connectionString’), lorsque la condition xdt:Locator=”Match(name)” est vrai.
C’est à dire que je vais remplacer ma chaîne de connexion qui est nommée 'cnx’ par le champs ‘connectionString’ ci-dessus.
Parmi les possibilités de transformation, on retrouve la possibilité de supprimer une entrée (Remove), supprimer toutes les entrées (RemoveAll), ajouter une nouvelle entrée (Insert), définir de nouveaux attributs (SetAttributes), supprimer des attributs (RemoveAttributes)…
Lien MSDN pour la syntaxe de transformation d’un fichier de configuration.
Je vous recommande également le blog de Vishal Joshi qui explique en détail (et en anglais) toutes ces informations.