Utiliser la transformation web.config de Visual Studio pour le débogage

Duplication possible:
Comment utiliser Web.debug.config dans le serveur de débogage Visual Studio intégré?

Je souhaite utiliser la transformation Web.config qui fonctionne bien pour la publication également pour le débogage.

Lorsque je publie une application Web, Visual Studio transforme automatiquement Web.config en fonction de ma configuration currenctbuild. Comment puis-je demander à Visual Studio de faire de même lorsque je commence à déboguer? Au démarrage du débogage, il utilise simplement le fichier Web.config par défaut sans transformation.

Une idée?

OK, étant entendu que web.debug.config & web.release.config sont web.release.config pour les paquets / publications. J’ai trouvé un moyen de permettre ce que vous essayez de faire. J’ai blogué à ce sujet à http://sedodream.com/2010/10/21/ASPNETWebProjectsWebdebugconfigWebreleaseconfig.aspx . Voici le résumé.

Voyons maintenant comment nous pouvons activer ce que le demandeur veut faire.

Pour récapituler, lorsqu’il construit sur une configuration particulière, il souhaite qu’une transformation spécifique soit appliquée à web.config . Donc, évidemment, vous ne voulez pas conserver un fichier web.config , car il va être remplacé.

Nous devons donc créer un nouveau fichier web.template.config , qui est simplement une copie de web.config . Supprimez simplement web.config en utilisant Windows Explorer (ne supprimez pas en utilisant Visual Studio car nous ne voulons pas le supprimer du projet).

Remarque: Si vous utilisez un fournisseur de contrôle de source intégré à Visual Studio, vous souhaiterez probablement supprimer web.config du contrôle de source.

De plus, nous ne souhaitons pas utiliser web.debug.config ou web.release.config car ceux-ci ont déjà un rôle bien défini dans le pipeline de publication Web, nous ne voulons donc pas le perturber. Nous allons donc créer deux nouveaux fichiers dans le même dossier que le projet et web.template.config , web.dev.debug.config et web.dev.release.config .

L’idée est que ce seront les transformations appliquées lors du débogage ou de l’exécution de votre application à partir de Visual Studio. Maintenant, nous devons nous connecter au processus de compilation / package / publication pour que tout soit câblé. Avec les projets d’application Web (WAP), vous pouvez créer un fichier de projet dans le même dossier sous le nom {ProjectName}.wpp.targets{ProjectName} est le nom du projet. Si ce fichier est sur le disque dans le même dossier que le WAP, il sera automatiquement importé dans le fichier du projet. J’ai donc créé ce fichier. Et j’ai mis le contenu suivant:

         $(PrepareForRunDependsOn); UpdateWebConfigBeforeRun;                

Laissez-moi vous expliquer cela un peu. J’ai créé la cible CopyWebTemplateConfig qui copiera toujours web.template.config dans web.config lors de la génération, même si vous ne déboguez pas votre application dans Visual Studio.

Cela est nécessaire car nous avons toujours besoin de prendre en charge le processus de publication / package de Visual Studio. Ensuite, j’ai étendu la propriété PrepareForRunDependsOn pour inclure la cible UpdateWebConfigBeforeRun . Cette propriété permet d’identifier la liste des cibles à exécuter avant l’exécution de tout projet géré à partir de Visual Studio.

Dans cette cible, j’utilise la tâche TransformXml pour transformer web.template.config , en utilisant le bon web.dev.***.config . Après cela, votre application démarre en utilisant le web.config correct en fonction de votre configuration de construction. Après cela, j’ai une autre cible ExcludeCustomConfigTransformsFiles , que ExcludeCustomConfigTransformsFiles dans le processus package / publish via l’atsortingbut BeforeTargets=”ExcludeFilesFromPackage” . Cela est nécessaire car nous ne voulons pas que ces fichiers soient inclus lorsque l’application est packagée ou publiée. Donc c’est vraiment tout ce qu’il y a à faire.

Pour expliquer le processus de package / publication un peu plus pour ce scénario. Lorsque vous web.debug.config / publiez web.debug.config ou web.release.config , en fonction de la configuration de la construction, sera toujours utilisé. Mais finalement, le fichier qu’il transforme est web.template.config , vous devrez donc vous ajuster en fonction de ce que vous avez dans ce fichier. Questions / Commentaires?

Andrew est sur le bon chemin. Lorsque vous utilisez cette fonctionnalité, voici comment elle a été conçue pour être utilisée.

web.config C’est le fichier de configuration que les développeurs doivent utiliser localement. Idéalement, vous devriez faire en sorte que cela soit normalisé. Par exemple, vous pouvez utiliser localhost pour les chaînes de firebase database, et non. Vous devriez vous efforcer que cela fonctionne sur les machines de développement sans modifications.

web.debug.config Il s’agit de la transformation qui est appliquée lorsque vous publiez votre application dans l’environnement de développement intermédiaire. Cela permettrait de modifier le fichier web.config requirejs pour l’environnement cible.

web.release.config Il s’agit de la transformation qui est appliquée lorsque vous publiez votre application dans l’environnement “production”. Évidemment, vous devrez faire attention aux mots de passe en fonction de votre application / équipe.

Le problème avec la transformation du fichier web.config que vous exécutez actuellement est qu’une transformation peut effectuer des actions destrucsortingces sur le fichier web.config. Par exemple, il peut supprimer des atsortingbuts, supprimer des éléments, etc.

Vous pouvez simplement utiliser le fichier web.config par défaut en tant que version de développement / débogage, puis le fichier web.release.config continuera bien sûr à être la version finale, car ses transformations sont appliquées lors de la publication.

Dans votre configuration de débogage, ajoutez une étape de post-construction et utilisez-la pour remplacer / transformer votre web.config

Bien que je convienne que l’approche la plus simple est généralement la meilleure, je peux facilement imaginer une situation où, pendant un certain temps, vous souhaitez connecter votre IDE à une firebase database de test plutôt qu’à votre base de développement. Bien que vous puissiez spécifier les chaînes de connexion de développement dans votre fichier web.config par défaut, il serait vraiment intéressant d’avoir un fichier Web.Test.config de sorte que lorsque vous convertissez votre configuration de build en “Test”, vous obtiendrez automatiquement les nouveaux parameters. encore dans votre IDE.

L’alternative historique consiste à commenter une série de chaînes de connexion pour une autre, mais ces nouvelles transformations de configuration ont donné l’espoir de mettre enfin un élément au cœur de cette mauvaise pratique. Bien qu’un fichier par défaut pour le développement et une transformation pour publication puissent fonctionner la plupart du temps, l’ajout d’une étape de post-génération pour transformer le fichier web.config est la réponse la plus complète à mon avis.