Bu sayfadaki mevcut cevapların birkaçını birleştiren ve ayrıca Scott Hanselman'ın bu önerisinden yararlanan bir sistem kullanıyoruz .
Kısacası, yaptığımız şey ortak bir app.config / web.config'e sahip olmak ve buradaki diğer yanıtların önerdiği gibi belirli ayarların çoğunu tek tek dosyalarda yapmaktı. örneğin SMTP ayarlarımız için app.config şunları içerir:
<system.net>
<mailSettings>
<smtp configSource="config\smtp.config" />
</mailSettings>
</system.net>
Bu dosya olan kaynak denetiminde. Ancak, bunun gibi tek tek dosyalar:
<?xml version="1.0" encoding="utf-8" ?>
<smtp deliveryMethod="Network">
<network host="127.0.0.1" port="25" defaultCredentials="false" password="" userName ="" />
</smtp>
Yine de hikayenin bittiği yer burası değil. Peki ya yeni geliştiriciler veya yeni bir kaynak kurulumu? Yapılandırmanın büyük kısmı artık kaynak denetiminde değildir ve ihtiyaç duydukları tüm .config dosyalarını manuel olarak oluşturmak çok zordur. En azından kutudan çıkar çıkmaz derleyebilecek bir kaynağa sahip olmayı tercih ederim.
Bu nedenle, .config dosyalarının bir sürümünü .config.default dosyaları olarak adlandırılan kaynak denetiminde tutuyoruz . Bu nedenle taze bir kaynak ağacı şuna benzer:
Yine de geliştiricinin herhangi bir faydası yoktur, çünkü Visual Studio için bunlar anlamsız metin dosyalarıdır. Bu nedenle toplu iş dosyası, copy_default_config.bat
.config.default dosyalarından bir başlangıç .config dosyaları kümesi oluşturmaya özen gösterir:
@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.
Komut dosyası güvenli bir şekilde yeniden çalıştırılabilir, çünkü .config dosyalarına zaten sahip olan geliştiriciler bunların üzerine yazılmaz. Bu nedenle, bu toplu iş dosyasını bir ön oluşturma olayı olarak çalıştırabiliriz. .Default dosyalarındaki değerler yeni bir kurulum için tam olarak doğru olmayabilir, ancak bunlar makul bir başlangıç noktasıdır.
Nihayetinde, her geliştiricinin elde ettiği şey şuna benzer bir yapılandırma dosyası klasörüdür:
Biraz kıvrımlı görünebilir, ancak kesinlikle geliştiricilerin birbirlerinin ayak parmaklarına basması güçlüğüne tercih edilir.