Orta çaplı ya da büyük boyutlu uygulamalarda genellikle uygulama birçok kişi ya da birden fazla takım tarafından geliştirilmekte ve kayank kod kontrolü programları ile ( source safe, cvs, svn gibi ) projelerini yönetmektedirler.Asp.net uygulamalarında, web.config dosyasında kişilerin ya da takımların kendilerine özel appSettings altında tutacak değerleri veya connectionStrings altında tutacak farklı veritabanı bağlantı bilgileri olabilir. Kimi durumlarda "check out" edilen web.config üzerinde degişiklik yapıldıkdan sonra ( ki bu bazen ekleme bazen de düzenleme olabilir ) "check in" yapılarak tekrar güncellenir. Bu kimi durumlarda birçok hataya ve aksaklığa neden olabiliyor. Bu durumda ilk akla gelen çözüm tüm uygulamada ortak kullanılacak değerler web.config dosyasına konur, test amaçlı, kişiye özel ya da takıma özel kısımlar ise harici bir dosyada tutulara web.config dosyası ile ile ilişkilendirilebilir.
Örneğin A takımının tüm projeden bağımsız kendisine özel bazı değerleri ve yine kendisine özel veritabanı bağlantısı bilgilerini harici olarak tutmak istediğini ama tüm projedeki ortak değerleri ve veritabanı bağlantı bilgilerini de kulanmak istediğini düşünelim. Bu durumda kendisine ait özel verileri web.config haricinde başka bir dosyada tutup, web.config dosyasında da bazı düzenlemelerden sonra diğer takım arkadaşlarının ya da aynı web.config'i kullanan diğer takımların başını ağrıtmayacaktır :)

Resimden de görüldüğü gibi projeme connectionstring lerimi ve appsetting lerimi yerleştirmek için iki ayrı dosya ekledim ( dosya isim ve uzantilarında zorunluluk yoktur. )
Ateam_local_connections.config dosyasının içeriği aşağıdaki gibi;
<connectionStrings>
<add name="Atakiminaozelbaglanti" connectionString="Atakimi baglanti bilgileri..."/>
</connectionStrings>
Ateam_local_settings.config dosyasının içeriği de
<appSettings>
<add key="Atakiminaozel" value="beniAtakimiOkur"/>
<add key="exts" value="jpg,png"/>
</appSettings>
gibidir. web.config dosyamızı da aşağıdaki gibi düzenledikten sonra test edebiliriz.
<appSettings file="Ateam_local_settings.config">
<add key="globalValue" value="Beni herkes bilir!"/>
</appSettings>
<connectionStrings configSource="Ateam_local_connections.config">
</connectionStrings>
bu kısımda dikkat edilecek nokta connectionStrings kısmına eğer harici bir dosya kullanacağınızı tanımlarsanız <connectionStrings> tagları arasına başka bir connectionstring tanımlaması yapamıyor oluşunuzdur.
Test kodumuz aşağıdaki gibidir.
protected void Page_Load(object sender, EventArgs e)
{
//genel appSettings okunuyor
Response.Write(ConfigurationManager.AppSettings["globalValue"]);
//A takimina ozel degerler okunuyor
Response.Write("<br>"+ConfigurationManager.AppSettings["Atakiminaozel"]);
//A takimina ozel connectionString okunuyor
Response.Write("<br>"+ConfigurationManager.ConnectionStrings["Atakiminaozelbaglanti"].ConnectionString);
} 
Saç baş yolduran problemsiz çalışma ortamları dilerim :)