Nous utilisons un système qui combine plusieurs des réponses existantes sur cette page, en plus de s'inspirer de cette suggestion de Scott Hanselman .
En bref, ce que nous avons fait, c'est d'avoir un app.config / web.config commun et d'avoir la plupart des paramètres spécifiques dans des fichiers individuels, comme suggéré par d'autres réponses ici. par exemple pour nos paramètres SMTP, l'app.config contient
<system.net>
<mailSettings>
<smtp configSource="config\smtp.config" />
</mailSettings>
</system.net>
Ce fichier est sous contrôle de code source. Cependant, les fichiers individuels, comme celui-ci, ne sont pas:
<?xml version="1.0" encoding="utf-8" ?>
<smtp deliveryMethod="Network">
<network host="127.0.0.1" port="25" defaultCredentials="false" password="" userName ="" />
</smtp>
Ce n'est pas tout à fait là que l'histoire se termine. Qu'en est-il des nouveaux développeurs ou d'une nouvelle installation source? La majeure partie de la configuration n'est plus sous contrôle de code source et il est difficile de créer manuellement tous les fichiers .config dont ils ont besoin. Je préfère avoir des sources qui seront au moins compilées dès la sortie de la boîte.
Par conséquent, nous conservons une version des fichiers .config dans le contrôle de code source, nommée .config.default files. Un arbre source frais ressemble donc à ceci:
Pourtant, cela ne sert vraiment à rien pour le développeur, car pour Visual Studio, ce ne sont que des fichiers texte sans signification. Par conséquent, le fichier batch copy_default_config.bat
,, se charge de créer un ensemble initial de fichiers .config à partir des fichiers .config.default:
@echo off
@REM Makes copies of all .default files without the .default extension, only if it doesn't already exist. Does the same recursively through all child folders.
for /r %%f in (*.default) do (
if not exist "%%~pnf" (echo Copying %%~pnf.default to %%~pnf & copy "%%f" "%%~pnf" /y)
)
echo Done.
Le script peut être réexécuté en toute sécurité, en ce sens que les développeurs qui ont déjà leurs fichiers .config ne les verront pas écrasés. Par conséquent, il est possible d'exécuter ce fichier de commandes en tant qu'événement de pré-construction. Les valeurs des fichiers .default peuvent ne pas être exactement correctes pour une nouvelle installation, mais elles constituent un point de départ raisonnable.
En fin de compte, chaque développeur se retrouve avec un dossier de fichiers de configuration qui ressemble à ceci:
Cela peut sembler un peu compliqué, mais c'est certainement préférable aux tracas des développeurs qui se marchent sur les pieds.