Tôi đang viết một ứng dụng WinForms/C#/.NET 3.5 thử nghiệm cho hệ thống mà chúng tôi đang phát triển và chúng tôi cần phải chuyển đổi giữa các tệp .config trong thời gian chạy, nhưng điều này đang diễn ra là một cơn ác mộng.Thay đổi App.config tại Thời gian chạy
Đây là cảnh: ứng dụng WinForms nhằm mục đích thử nghiệm một WebApp, được chia thành 5 hệ thống phụ. Quá trình kiểm tra làm việc với các thư được gửi giữa các hệ thống con và để quá trình này thành công, mỗi hệ thống con phải có tệp .config riêng.
Đối với ứng dụng thử nghiệm của tôi, tôi đã viết 5 tệp cấu hình riêng biệt. Tôi muốn tôi có thể chuyển đổi giữa 5 tệp này trong thời gian chạy, nhưng vấn đề là: Tôi có thể lập trình chỉnh sửa tệp .config rất nhiều lần, nhưng những thay đổi này sẽ chỉ có hiệu lực một lần. Tôi đã tìm kiếm một thời gian dài cho một hình thức để giải quyết vấn đề này nhưng tôi vẫn không thành công.
Tôi biết định nghĩa sự cố có thể hơi khó hiểu nhưng tôi thực sự đánh giá cao nếu có ai đó giúp tôi.
Cảm ơn trước!
--- CẬP NHẬT 01-06-10 ---
Có điều tôi chưa đề cập trước đây. Ban đầu, hệ thống của chúng tôi là một ứng dụng web với các cuộc gọi WCF giữa mỗi hệ thống con. Vì lý do kiểm tra hiệu năng (chúng tôi đang sử dụng ANTS 4), chúng tôi phải tạo một bản sao cục bộ của các hội đồng và tham khảo chúng từ dự án thử nghiệm. Nghe có vẻ hơi sai, nhưng chúng tôi không thể tìm ra cách thỏa mãn để đo hiệu năng của một ứng dụng từ xa.
--- End Update ---
Đây là những gì tôi đang làm:
public void UpdateAppSettings(string key, string value)
{
XmlDocument xmlDoc = XmlDocument.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
foreach (XmlElement item in xmlDoc.DocumentElement)
{
foreach (XmlNode node in item.ChildNodes)
{
if (node.Name == key)
{
node.Attributes[0].Value = value;
break;
}
}
}
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
System.Configuration.ConfigurationManager.RefreshSection("section/subSection");
}
dup/related? http://stackoverflow.com/questions/1542171/change-app-config-at-runtime – Hogan
Tôi đã thử các aproaches này ... vấn đề là, thẻ tôi đang thay đổi nằm ngoài số. Tôi cũng đã thử tạo các AppDomain mới và thiết lập các tệp .config khác nhau cho chúng, nhưng nó cũng không hoạt động. –