Saya memiliki masalah berikut:
Kami memiliki aplikasi yang memuat modul (tambahan). Modul-modul ini mungkin memerlukan entri di app.config (mis. Konfigurasi WCF). Karena modul dimuat secara dinamis, saya tidak ingin memiliki entri ini di file app.config aplikasi saya.
Yang ingin saya lakukan adalah sebagai berikut:
- Buat app.config baru dalam memori yang menggabungkan bagian konfigurasi dari modul
- Beri tahu aplikasi saya untuk menggunakan app.config baru itu
Catatan: Saya tidak ingin menimpa app.config default!
Ini harus bekerja secara transparan, sehingga misalnya ConfigurationManager.AppSettings
menggunakan file baru itu.
Selama evaluasi masalah ini, saya datang dengan solusi yang sama seperti yang disediakan di sini: Muat ulang app.config dengan nunit .
Sayangnya, sepertinya tidak melakukan apa-apa, karena saya masih mendapatkan data dari app.config yang normal.
Saya menggunakan kode ini untuk mengujinya:
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);
}
Ini mencetak nilai yang sama dua kali lipat, meskipun combinedConfig
berisi nilai-nilai selain app.config yang normal.
Reload app.config with nunit
dapat berfungsi, tidak yakin, jika digunakan pada entri aplikasi sebelum konfigurasi apa pun dimuat.
AppDomain
dengan file konfigurasi yang sesuai bukan merupakan pilihan?