2011-09-07 10 views
5

Projemde bir settings.settings dosyasıyla çalışmaya çalışıyorum. .exe dosyası ve çeşitli DLL'ler arasında paylaşılması gereken değerler vardır. Bu değerleri sadece geçmemeyi tercih ediyorum, onlara ihtiyaç duyduğumda onlara erişmek istiyorum ama her proje kendi değerlerini biraz farklı isimlerle belirliyor ve bu nedenle diğer projelerle ulaşılamıyor.Bir .exe ve bir .dll arasındaki paylaşılan yapılandırma

app.config dosyasının içeriğini .exe ile bir .dll arasında settings.settings yaklaşımını kullanarak paylaşmanın bir yolu var mı? Ya da bunu yapmak için ConfigurationManager'ı kullanmaya geri dönmem gerekiyor mu?

cevap

5

Ayarlarınızı sadece App.config dosyasına koyun ve bunları dll'nizden okuyun. Aslında dll'nin ayarları/config için arayacağı tek yer olduğuna inanıyorum, dll için yerel yapılandırma göz ardı edilir.

Burada dll uygulamasına güçlü referansların bulunmadığından emin olmak için hızlı bir örnek. Bu kod harika değil ama sizde fikir edinirsiniz.

private string GetSettingValue(string key) 
    { 
    string executingAssembly = Assembly.GetEntryAssembly().GetName().Name; 
    string sectionName = "applicationSettings/" + executingAssembly 
               + ".Properties.Settings"; 
    ClientSettingsSection section = 
      (ClientSettingsSection)ConfigurationManager.GetSection(sectionName); 

    // add null checking etc 
    SettingElement setting = section.Settings.Get(key); 
    return setting.Value.ValueXml.InnerText; 
    } 

Alternatif paylaşılan ayarlarla ortak dll varsa ve yapılandırma paylaşması gereken her derlemesinden bir bağımlılık alır. Bu çok daha temiz.

+0

Ancak, hem .exe'im hem de .dll dosyamma erişmek istediğim setting1 adlı bir ayarım varsa, genel bir girişime nasıl sahip olabilirim? Uygulamadan biri applicationSettings/app_name.Properties.Settings içinde olacak ve dll'den biri applicationSettings/library.Properties.Settings içinde olacaktır. Aynı değere erişmelerini nasıl sağlayabilirim? –

+0

Bir kod örneği eklendi – TheCodeKing