web-dev-qa-db-fra.com

Visual Studio: différenciez app.config pour le mode de débogage et de publication

Existe-t-il un moyen d'utiliser automatiquement un app.config distinct lors de la construction en mode de publication?

En d'autres termes, je veux tester avec un app.config et libérer avec un autre.

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

38
Korey

Déchargez le projet dans l'Explorateur de solutions via le menu contextuel.

Modifiez le .csproj fichier via le menu contextuel et ajoutez ceci:

<PropertyGroup>
    <AppConfig>App.$(Configuration).config</AppConfig>
</PropertyGroup>
22
trueboroda

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

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

C'est un peu tard pour la fête, mais je suis tombé sur une belle façon de mettre en œuvre le web.transform approche pour app.config des dossiers. (c'est-à-dire qu'il utilise l'espace de noms http://schemas.Microsoft.com/XML-Document-Transform)

Je pense que c'est "sympa" car c'est une pure approche xml et ne nécessite pas de logiciel tiers.

Un fichier App.config parent/par défaut est issu de, selon vos différentes configurations de build. 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 procédure pas à pas a été publiée ici: http://mitasoft.wordpress.com/2011/09/28/multipleappconfig/


Écoutez, maman - Aucun événement post-build explicite dans mon IDE!

15
ne1410s

Un moyen simple et rapide consiste à créer un deuxième fichier "App.release.config" et à insérer cet événement de pré-génération:

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-build:

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 le .Settings fichiers en tant que paramètres de débogage, qui sont toujours liés à App.config. Le App.release.config doit être construit à la main, mais il est assez facile de changer cette fonctionnalité.

7
Martin Braun

Je recommande fortement SlowCheetah pour les transformations app.config. Visitez ce joyau de pépite ici Galerie Visual Studio

5
Rudy Hinojosa

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

1
Dave