Tôi có một vấn đề sau:
Chúng tôi có một ứng dụng tải các mô-đun (tiện ích bổ sung). Các mô-đun này có thể cần các mục trong app.config (ví dụ: cấu hình WCF). Vì các mô-đun được tải động, tôi không muốn có các mục này trong tệp app.config trong ứng dụng của mình.
Những gì tôi muốn làm là như sau:
- Tạo một app.config mới trong bộ nhớ kết hợp các phần cấu hình từ các mô-đun
- Nói với ứng dụng của tôi để sử dụng app.config mới đó
Lưu ý: Tôi không muốn ghi đè lên app.config mặc định!
Nó nên hoạt động trong suốt, ví dụ như ConfigurationManager.AppSettings
sử dụng tệp mới đó.
Trong quá trình đánh giá vấn đề này, tôi đã đưa ra giải pháp tương tự như được cung cấp ở đây: Tải lại app.config bằng nunit .
Thật không may, nó dường như không làm gì cả, vì tôi vẫn nhận được dữ liệu từ app.config bình thường.
Tôi đã sử dụng mã này để kiểm tra nó:
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);
}
Nó in cùng hai giá trị, mặc dù combinedConfig
chứa các giá trị khác với app.config bình thường.
Reload app.config with nunit
có thể hoạt động, không chắc chắn, nếu được sử dụng trên mục nhập ứng dụng trước khi tải bất kỳ cấu hình nào.
AppDomain
với tập tin cấu hình phù hợp không phải là một lựa chọn?