Usiamo un sistema che combina molte delle risposte esistenti in questa pagina, più si ispira a questo suggerimento di Scott Hanselman .
In breve, quello che abbiamo fatto è stato avere un'app.config / web.config comune e avere la maggior parte delle impostazioni specifiche nei singoli file, come suggerito da altre risposte qui. ad esempio, per le nostre impostazioni SMTP, app.config contiene
<system.net>
<mailSettings>
<smtp configSource="config\smtp.config" />
</mailSettings>
</system.net>
Questo file è nel controllo del codice sorgente. Tuttavia, i singoli file, come questo, non sono:
<?xml version="1.0" encoding="utf-8" ?>
<smtp deliveryMethod="Network">
<network host="127.0.0.1" port="25" defaultCredentials="false" password="" userName ="" />
</smtp>
Ma non è proprio qui che finisce la storia. E i nuovi sviluppatori o una nuova installazione dei sorgenti? La maggior parte della configurazione non è più nel controllo del codice sorgente ed è un problema creare manualmente tutti i file .config di cui hanno bisogno. Preferisco avere un sorgente che almeno si compili immediatamente.
Pertanto manteniamo una versione dei file .config nel controllo del codice sorgente, denominata file .config.default . Un nuovo albero dei sorgenti appare quindi così:
Tuttavia, non è davvero utile per lo sviluppatore, poiché per Visual Studio sono solo file di testo privi di significato. Quindi il file batch copy_default_config.bat
,, si occupa di creare un set iniziale di file .config dai file .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.
Lo script può essere rieseguito in modo sicuro, in quanto gli sviluppatori che hanno già i propri file .config non li sovrascriveranno. Pertanto, si potrebbe plausibilmente eseguire questo file batch come evento di pre-compilazione. I valori nei file .default potrebbero non essere esattamente corretti per una nuova installazione, ma sono un punto di partenza ragionevole.
In definitiva, ciò con cui ogni sviluppatore finisce è una cartella di file di configurazione che assomiglia a questo:
Può sembrare un po 'complicato, ma è decisamente preferibile alla seccatura degli sviluppatori che si pestano a vicenda.