2009-08-18 6 views
20

Existe-t-il un moyen d'utiliser automatiquement un fichier app.config distinct lors de la création en mode édition? En d'autres termes, je veux tester avec un app.config, et sortir avec un autre.Visual Studio: différencier app.config pour le mode de débogage et de publication

Actuellement, je conserve une copie distincte appelée app.config.production, et écrase manuellement bin \ Release \ Application.exe.config après la création de la version.

Répondre

7

J'ai récemment posté une réponse extrêmement tardive à un semblable SO sujet: https://stackoverflow.com/a/27546685/2798367

je vais le répéter ici pour plus de clarté:

C'est un peu tard pour le parti, mais je suis tombé sur une belle façon d'implémenter l'approche web.transform pour les fichiers app.config. (c'est-à-dire qu'il utilise l'espace de noms http://schemas.microsoft.com/XML-Document-Transform)

Je pense que c'est "agréable" parce que c'est une approche purement XML et ne nécessite pas de logiciel tiers.

Un fichier parent/par défaut App.config est issu de, selon vos différentes configurations de construction. Ces descendants ne remplacent alors que ce dont ils ont besoin. À mon avis, c'est beaucoup plus sophistiqué et robuste que d'avoir à maintenir x nombre de fichiers de configuration qui sont copiés dans leur intégralité, comme dans d'autres réponses.

Une visite virtuelle a été posté ici: http://mitasoft.wordpress.com/2011/09/28/multipleappconfig/


Regardez, maman - Aucun événement post-construction explicites dans mon IDE!

3

Une façon simple et rapide est de créer un second fichier "App.release.config" et insérez cet événement de pré-construction:

IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.config" "$(ProjectDir)App.debug.config" 
IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.release.config" "$(ProjectDir)App.config" 

Et cet événement post construction:

IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.debug.config" "$(ProjectDir)App.config" 

Cela peut être un peu étrange, mais cela vous permettra de continuer à utiliser les fichiers .Settings comme paramètres de débogage, qui sont toujours liés au App.config. Le App.release.config doit être construit à la main, mais il est assez facile de changer cette fonctionnalité.

+0

où ajoutez-vous ces événements de construction? – Adrian

+1

@Adrian Cliquez droit sur votre projet dans votre solution, cliquez sur "Propriétés" et ouvrez le robinet "Construire des événements" – modiX

0

Je ne sais pas si cela aide, mais app.config reconnaîtra les chaînes de substitution MSBUILD standard telles que $ (Configuration).

2

Je recommande fortement SlowCheetah pour les transformations app.config. Visitez ce nuget gem ici Visual Studio Gallery

Questions connexes