.net yapılandırma dosyaları hakkında pek çok yayın olmasına rağmen, gereksinimlerimin önerilen çözümlerden herhangi birine izin vermediğine inanıyorum (veya bu işlemi benim için çalışmasını sağlayacak kadar anlamıyorum).Tüm uygulama verilerini kaydetmek ve geri yüklemek için .NET yapılandırma dosyaları (app.config, settings.settings) nasıl kullanılır?
durum bir Windows belirli kullanıcı giriş alanları (örneğin IP Adresi), hem de uygulama ayarlarına form özelliklerini (pencere boyutu, vs) bağlanan bir uygulama (sadece de başka bir uygulamayı olabilir) (Forms olması Özellikler-> Ayarlar alanında). Anladığım kadarıyla, bu ayarlar projemin app.config dosyasında gösterilenlerle aynıdır, bu yüzden bu ayarları değiştirmek için System.Configuration.ConfigurationManager sınıfını kullanabilmem gerekir.
Yapmak istediğim, kullanıcının kayıtlı tüm ayarları almasına ve içe aktarmasına izin vermektir. Bazı özel nesnelerin serileştirilmesini yapmak veya INI dosyaları ile çalışmak yerine, uygulamanın kullandığı yapılandırma dosyasını kaydetmenin ve değiştirmenin daha kolay olacağını düşündüm.
Bir belirtilen dosyaya geçerli ayarları kaydetmek için nispeten kolaydır: Mevcut ayarları üzerine yazmak bir yapılandırma dosyasını geri
Ancakinternal static void Export(string settingsFilePath)
{
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
config.SaveAs(settingsFilePath);
}
, zor kanıtlıyor. Öyle
var newConfig = ConfigurationManager.OpenExeConfiguration(settingsFilePath)
gibi bir yapılandırma dosyasını açabilirsiniz ama tamamen ithal dosyanın olanlarla şimdiki config tüm ayarları nasıl değiştirileceği görmüyorum gibi
görünüyor.
[Düzenle: Bu aşırı yükleme .exe dosyasının değil .config dosyasının yolunu almalıdır. Bir exe dosyasını bu şekilde açmak, çağıran kod yapılandırma dosyasında aynı derlemeleri referans göstermiyorsa ConfigurationErrorsException atar.]
Belki de yalnızca bir bölümünün yerine geçmek için other posts numaralı belgede belirtilen yöntemleri kullanmam gerekiyor config, ve her şeyi değil, ama bu noktada bunun nasıl olacağını görmüyorum.
Herhangi bir fikrin var mı? Doğru parçayı mı indiriyorum yoksa sadece INI dosyalarını mı kullanmalıyım?
Dosyanın tamamını işlemek konusunda haklısınız gibi görünüyorsunuz: Bellekte, en azından, ilgilendiğimi düşündüğüm "appSettings" den daha fazla bölüm var. Ne demek istediğimi görmek için, var currentConfig = ConfigurationManager.OpenExeConfiguration (ConfigurationUserLevel.PerUserRoamingAndLocal) öğesini deneyin; currentConfig.Dump(); LINQPad'de . – Pat
Değiştirmek istediğim "appSettings" değeri değil, "userSettings" değeri olduğunu keşfettim. Özellikle, bu numaralı düğümdür. –
Pat