2011-06-22 17 views
10

C# mono projesine bir app.config dosyası ekledim. Projenin İçindeMonodevelop yapılandırma dosyalarını destekliyor mu?

Ben yapılandırma dosyası yok tuşlar algılanır bu

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<appSettings> 
<add key="Key1" value="Kevin" /> 
<add key="Key2" value="150" /> 
<add key="Key3" value="Rice" /> 
</appSettings> 
</configuration> 

benziyor

foreach (string key in ConfigurationManager.AppSettings) 
{ 
string value = ConfigurationManager.AppSettings[key]; 
Console.WriteLine("Key: {0}, Value: {1}", key, value); 
} 

kullandı. Yapılandırma değerlerini nasıl okuyabilirim?

+0

ConfigurationManager'ı kullanarak anahtarları yazıp ConfigurationManager'ı kullanarak tekrar okuyun. Bu başarılı olursa, oluşturduğu XML dosyasını arayın. –

+0

@robert - ama sadece bir dosyadan yapılandırma değerlerini okumalıyım – danidacar

+0

Önerilerim başarılı olursa, XML dosyasının nerede bulunacağını ve nasıl biçimlendirileceğini bileceksiniz. Bunu öğrendikten sonra, dosyayı el ile oluşturabilirsiniz. –

cevap

6

Bu yanıt çok geç bir şekilde geçiyor, ancak buna rastlayan herkes için, evet, mono yapılandırma dosyalarını destekliyor. Yukarıda açıklanan ConfigurationManager yöntemini kullanabilir veya app.config dosyasında kendi özel ayarlar bölümünüzü oluşturabilir ve ApplicationSettingsBase'den türeyen bir sınıfta değiştirebilirsiniz. Benim düşünceme göre, bu, ConfigurationManager'ın yaptığı gibi bir diziden dizilere erişmekten ziyade bir sınıf ve güçlü yazılan özellikler ile çalıştığınız için app.config dosyasını işlemenin çok daha doğal bir yoludur. Uygulama ayarları için bir sınıf oluşturmak da oldukça kolaydır. Sınıfın nasıl oluşturulacağını açıklayan MSDN sayfası: http://msdn.microsoft.com/en-us/library/system.configuration.applicationsettingsbase.aspx

Mono'yla ilgili bilgi sahibi olmanız gereken tek uyarı, .NET Framework'ün UserScopedSettings uygulamasının app.config dosyasında tanımlanmasına izin vermesidir (varsayılan değer sağlamak için); Mono bunu yaparsanız istisnalar atacaktır. Bunun geçici çözümü, UserScopedSettings'i app.config dosyasından çıkarmak ve koddaki bir özellik için varsayılan değeri tanımlamaktır. Bu, mükemmel bir geçici çözüm değildir çünkü kodun dışındaki varsayılan değeri değiştirmenin bir yolu yoktur, ancak çoğu durumda bu yeterli olacaktır.