Utilizziamo un sistema che combina diverse delle risposte esistenti in questa pagina, oltre a disegni su this suggestion by Scott Hanselman.
In breve, ciò che abbiamo fatto è stato avere un app.config/web.config comune e avere la maggior parte delle impostazioni specifiche in singoli file, come suggerito da altre risposte qui. per esempio. per le nostre impostazioni SMTP, l'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 lo sono:
<?xml version="1.0" encoding="utf-8" ?>
<smtp deliveryMethod="Network">
<network host="127.0.0.1" port="25" defaultCredentials="false" password="" userName ="" />
</smtp>
Non è proprio questo il punto in cui finisce la storia. Che dire dei nuovi sviluppatori o di una nuova installazione di origine? La maggior parte della configurazione non è più nel controllo del codice sorgente, ed è complicato costruire manualmente tutti i file .config di cui hanno bisogno. Preferisco avere una sorgente che si compili almeno immediatamente.
Pertanto manteniamo una versione dei file .config nel controllo del codice sorgente, denominata .config.default file. Un albero sorgente fresca si presenta quindi come questo:
Eppure, non proprio alcuna utilità per lo sviluppatore, dal momento che per Visual Studio sono solo i file di testo senza senso. Da qui 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 è tranquillamente ri-eseguibile, in quanto gli sviluppatori che hanno già la loro config i file non verranno sovrascritti. Pertanto, si potrebbe concepire questo file batch come evento 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 quello che ogni sviluppatore finisce con è una cartella di file di configurazione che sembra qualcosa di simile:
Può sembrare un po 'contorto, ma è sicuramente preferibile il fastidio di sviluppatori calpestare l'un l'altro le dita dei piedi.
Sto votando per riaprire, poiché questo è un problema comune per gli sviluppatori di Visual Studio e coinvolge direttamente gli strumenti che gli sviluppatori stanno utilizzando. (quindi i voti) –
D'accordo, questo è un problema persistente dato che le dimensioni del nostro team sono cresciute e vari tentativi di risoluzione sono stati insoddisfacenti. – DiskJunky