Şu problemim var:
Modülleri (eklentileri) yükleyen bir uygulamamız var. Bu modüllerin app.config dosyasında girişlere ihtiyacı olabilir (örn. WCF yapılandırması). Modüller dinamik olarak yüklendiğinden, bu girdilerin uygulamamın app.config dosyasında olmasını istemiyorum.
Yapmak istediğim şey şu:
- Modüllerden yapılandırma bölümlerini içeren bellekte yeni bir app.config oluşturun
- Uygulamama bu yeni app.config'i kullanmasını söyle
Not: Varsayılan app.config'in üzerine yazmak istemiyorum!
Şeffaf bir şekilde çalışmalıdır, böylece örneğin ConfigurationManager.AppSettings
bu yeni dosyayı kullanır.
Bu problemle ilgili değerlendirmem sırasında, burada sağlananla aynı çözümü buldum: app.config dosyasını nunit ile yeniden yükleyin .
Ne yazık ki hiçbir şey yapmıyor gibi görünüyor, çünkü verileri hala normal app.config'den alıyorum.
Bu kodu test etmek için kullandım:
Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
Console.WriteLine(Settings.Default.Setting);
var combinedConfig = string.Format(CONFIG2, CONFIG);
var tempFileName = Path.GetTempFileName();
using (var writer = new StreamWriter(tempFileName))
{
writer.Write(combinedConfig);
}
using(AppConfig.Change(tempFileName))
{
Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
Console.WriteLine(Settings.Default.Setting);
}
combinedConfig
Normal app.config değerinden başka değerler içermesine rağmen, aynı değerleri iki kez yazdırır .
Reload app.config with nunit
, herhangi bir yapılandırma yüklenmeden önce uygulama girişinde kullanılırsa işe yarayabilir.
AppDomain
uygun yapılandırma dosyasıyla ayrı olarak barındırmak bir seçenek değil mi?