Transformations web.config d'une Web application.

Publié par Fabrice Michellonet sous le(s) label(s) , le 22 février 2011

On a tous connu ce cas de figure, ou l'on doit déployer une application web sur une plateforme autre que celle sur laquelle on développe (serveur de dev, recette, prod etc...);
A minima on se retrouve à modifier les chaines de connexions vers la/les bases de données, au mieux on a prévu une copie tweakée du web.config par plateforme (avec le gros inconvénient d'avoir maintenant plusieurs fichiers à maintenir en parallèle), on fait ça dans l'urgence et hop ça plante :p.
Surement un petit bout de configuration non que l'on a oublié de reporté dans ce fichier de conf spécifique à l'environnement visé. Ça sent le vécu, tout ça !

Réjouissez-vous ce temps est révolu!

Dans Visual Studio 2010, il possible de mettre en œuvre des transformations sur les fichiers de configuration. L'idée est d'avoir un fichier web.config servant de base, puis pour chaque Configuration de Solution (Debug, Release, etc..) un fichier de transformation contient les modifications apportés vis à vis du fichier de base.

Si l'on ajoute deux Configurations de solutions, par exemple Recette et Prod, puis que l'on clique sur Add Config Transform deux nouveaux fichiers apparaissent Web.Recette.config & Web.Prod.config

L'idée de ce billet n'est pas d'expliquer en détail la syntaxe de transformation bien expliquée sur MSDN; mais afin de poursuivre l'exemple voici mon web.config initial


    

et la transformation pour l'environnement de recette :




Bon maintenant la mauvaise nouvelle (haaa ? j'vous avais pas dit qu'il y avait une mauvaise nouvelle?), c'est que la transformation du fichier de config ne se fait pas lors du build.
Malheureusement, elle n’a lieu que lorsqu'on utilise webDeploy.
La bonne nouvelle? C’est qu'en trafiquant un peu le csproj on peut lancer la tache MSBuild en charge de la transformation.

Allez tout en bas du fichier et modifiez-le comme suit :


    


A partir de maintenant après chaque build le fichier web.config sera transformé et copié dans le répertoire obj/Nom_De_La_Config/web.config

Voilà, c'est tout pour ce soir, j’espère que cette astuce vous facilitera la vie lors de vos futurs déploiements.

3 commentaires:

guro a dit… @ 3 mai 2011 à 17:44

Salut,

Petite correction pour la modification du fichier csproj :

guro a dit… @ 3 mai 2011 à 17:46

erf, pas trouver comment faire pour inserer les balise :/ bon plus d'info ici : http://forums.asp.net/t/1532038.aspx/2/10

Fabrice Michellonet a dit… @ 5 mai 2011 à 00:50

Salut,

merci de ton commentaire; mais pourrais-tu préciser quel est la correction que tu souhaite apporter? (la conversation sur le forum que tu pointe étant assez touffue)

Merci.

Enregistrer un commentaire