Kami menggunakan sistem yang menggabungkan beberapa jawaban yang ada di halaman ini, ditambah dengan saran dari Scott Hanselman ini .
Singkatnya, apa yang kami lakukan adalah memiliki app.config / web.config yang sama, dan memiliki sebagian besar pengaturan khusus dalam file individual, seperti yang disarankan oleh jawaban lain di sini. misalnya untuk pengaturan SMTP kami, app.config berisi
<system.net>
<mailSettings>
<smtp configSource="config\smtp.config" />
</mailSettings>
</system.net>
File ini ada dalam kendali sumber. Namun, file individual, seperti ini, bukanlah:
<?xml version="1.0" encoding="utf-8" ?>
<smtp deliveryMethod="Network">
<network host="127.0.0.1" port="25" defaultCredentials="false" password="" userName ="" />
</smtp>
Itu belum cukup dimana cerita berakhir. Bagaimana dengan pengembang baru, atau instalasi sumber baru? Sebagian besar konfigurasi tidak lagi berada dalam kontrol sumber, dan merepotkan untuk membuat semua file .config yang mereka butuhkan secara manual. Saya lebih suka memiliki sumber yang setidaknya akan dikompilasi langsung dari kotak.
Oleh karena itu kami menyimpan versi file .config di kontrol sumber, bernama file .config.default . Oleh karena itu, pohon sumber segar terlihat seperti ini:
Namun, tidak ada gunanya bagi pengembang, karena untuk Visual Studio mereka hanya file teks yang tidak berarti. Oleh karena itu file batch,, copy_default_config.bat
menangani pembuatan set awal file .config dari 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.
Skrip ini dapat dijalankan kembali dengan aman, karena pengembang yang telah memiliki file .config tidak akan menimpanya. Oleh karena itu, seseorang dapat menjalankan file batch ini sebagai acara pra-pembuatan. Nilai dalam file .default mungkin tidak benar-benar tepat untuk penginstalan baru, tetapi ini adalah titik awal yang masuk akal.
Pada akhirnya apa yang akhirnya didapatkan oleh setiap pengembang adalah folder file konfigurasi yang terlihat seperti ini:
Ini mungkin tampak sedikit berbelit-belit, tetapi itu pasti lebih disukai daripada kerumitan pengembang yang saling menginjak kaki.