ฉันมีปัญหาต่อไปนี้:
เรามีแอปพลิเคชันที่โหลดโมดูล (ส่วนเสริม) โมดูลเหล่านี้อาจต้องการรายการใน app.config (เช่นการกำหนดค่า WCF) เนื่องจากโมดูลถูกโหลดแบบไดนามิกฉันไม่ต้องการให้รายการเหล่านี้อยู่ในไฟล์ app.config ของแอปพลิเคชันของฉัน
สิ่งที่ฉันต้องการจะทำมีดังต่อไปนี้:
- สร้าง app.config ใหม่ในหน่วยความจำที่รวมส่วนการกำหนดค่าจากโมดูล
- บอกแอปพลิเคชันของฉันให้ใช้ app.config ใหม่นั้น
หมายเหตุ: ฉันไม่ต้องการเขียนทับ app.config เริ่มต้น!
ควรทำงานอย่างโปร่งใสตัวอย่างเช่นConfigurationManager.AppSettings
ใช้ไฟล์ใหม่นั้น
ในระหว่างการประเมินของฉันของปัญหานี้ผมมาด้วยวิธีเดียวกับที่ให้ไว้ที่นี่: โหลด app.config กับ nunit
น่าเสียดายที่ดูเหมือนจะไม่ทำอะไรเลยเพราะฉันยังได้รับข้อมูลจาก app.config ปกติ
ฉันใช้รหัสนี้เพื่อทดสอบ:
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
มีค่าอื่นนอกเหนือจาก app.config ปกติ
Reload app.config with nunit
อาจใช้งานได้ไม่แน่ใจว่าหากใช้กับรายการแอปพลิเคชันก่อนที่จะโหลดการกำหนดค่าใด ๆ
AppDomain
กับไฟล์คอนฟิกูเรชันที่เหมาะสมไม่ใช่ตัวเลือก?