2009-08-10 20 views
9

C# .NET 2.0 Windows Uygulamasını kullanıyorum.AppSettings'deki değişiklik, Uygulamamı yeniden başlatmalı. Nasıl önleyebilirim?

ve Uygulama Ayarlarım için app.config kullanıyorum.

Ancak AppSettings'de değişiklik çalışma zamanını yansıtmıyor, yeniden başlatılacak Uygulamaya İhtiyacı var.

Nasıl önleyebilirim?

İşte benim Uygulama kodlarını okuyup yazdığım kod parçacığım.

Bu

string temp = ConfigurationManager.AppSettings.Get(key); 

Ben düğüm Sen yenilemek için

ConfigurationManager.RefreshSection("appSettings")
arama deneyebilirsiniz cari yapılandırma/appSettings DÜĞÜM

node.Attributes["value"].Value = value; 
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 

cevap

23

olan böyle değerinin güncellenmesi gibiyim Ayarı okuyorum Dosyanın diskten AppSettings bölümü. Yenildikten sonra, yeni değerleri okuyabilmeniz gerekir.

Sadece bunu test ettim ve gerçekten çalışıyor.

+1

+1 Çok güzel - Bunu yapabileceğinizi bilmiyordum! –

+4

RefreshSection çalışmaz –

+1

Çalışıyor! – shahjapan

1

Dont kullanmak yerine, ayarları okumak için ConfigurationManager kullanın:

 System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile).AppSettings.Settings["value"]; 
+0

Evet, bu da mümkün olabilir, ancak muhtemelen bunu yapmanın en etkili yolu değildir. – shahjapan

+2

Burada ConfigurationManager'ı da kullanabilirsiniz. – SwissCoder

3

Alternatif olarak, a tek 'Seçenekler' uygulama ayarlarına tutmak ve okuma gerçekleştirmek yaratabilecek/sizin için yazıyor. Yüklendikten sonra, .config öğesinin değiştirilmesi yeniden yüklenmeyi gerektirmiyorsa, tekil olarak bir özelliği ayarlayın ve .Save() yöntemini çağırın.

Ayarlarınızın 'çalışma zamanı' sürümü tekil olarak, diskten okumaya gerek yok.

+0

+1, Mürettebatım opnion, şimdiye kadar ki en iyi çözüm bu. – Cleiton

1
ConfigurationManager.RefreshSection("appSettings"); 

çalışıyor!

Ama biz hata ayıklama modunda ise, yapılandırma dosyası xxxxx.vshost.exe.config xxxxx proje adıdır, çağrılabilir dikkat edin.

İlgili konular