Thứ Năm, 26 tháng 7, 2012

Cách sử dụng ( đọc, thêm, sửa, xóa ) appSettings trong file app.config C#

Hiện giờ thường chỉ những file cấu hình đặc biệt người ta mới sử dụng file xml để cấu hình cho ứng dụng. Với những cấu hình không quá phức tạp thì việc sử dụng appSettings trong file app.config cực kỳ nhanh gọn.

Khai báo biến 'abc' có giá trị '01/01/1900 00:00:00 AM' trong appSettings  trong file app.config:
  1. <?xml version="1.0"?>  
  2. <configuration>  
  3. <startup>  
  4.   <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>  
  5.   <appSettings>  
  6.     <add key="abc" value="01/01/1900 00:00:00 AM"/>  
  7.   </appSettings>  
  8. </configuration>  
  9.       
Để đọc giá trị của abc sử dụng:
  1. string abc = ConfigurationManager.AppSettings["abc"];  
  2.       
Khi cần thay đổi các giá trị cấu hình này, cách đơn giản nhất là mở file config lên và sửa ^^!. Tuy nhiên đối với những ứng dụng cho người dùng cuối, không thể bắt người dùng tự vào chỉnh sửa được mà ta phải làm chức năng cho họ cấu hình. Dưới đây là một số hàm cần thiết để chỉnh sửa file config.

- Sửa giá trị của biến trong appSettings trong file app.config:
  1. public static void EditAppSetting(string key, string value)  
  2. {  
  3.     System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  
  4.     config.AppSettings.Settings[key].Value = value;  
  5.     config.Save(ConfigurationSaveMode.Modified);  
  6.     ConfigurationManager.RefreshSection("appSettings");  
  7. }  
- Thêm 1 giá trị mới vào appSettings trong file app.config:
  1. public static void AddAppSetting(string key, string value)  
  2. {  
  3.     System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  
  4.     config.AppSettings.Settings.Add(key,value);  
  5.     config.Save(ConfigurationSaveMode.Modified);  
  6.     ConfigurationManager.RefreshSection("appSettings");  
  7. }  
- Xóa 1 giá trị ra khỏi appSettings trong file app.config:
  1. public static void RemoveAppSetting(string key)  
  2. {  
  3.     System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  
  4.     config.AppSettings.Settings.Remove(key);  
  5.     config.Save(ConfigurationSaveMode.Modified);  
  6.     ConfigurationManager.RefreshSection("appSettings");  
  7. }  
Demo thử hàm edit nào:
  1. Console.WriteLine(ConfigurationManager.AppSettings["abc"]);  
  2. EditAppSetting("abc",DateTime.Now.ToString());  
  3. Console.WriteLine(ConfigurationManager.AppSettings["abc"]);  
  4. Console.ReadLine();  
Dòng đầu tiên sẽ in ra giá trị của abc trước khi sửa file config.
Dòng thứ 2 tiến hành sửa giá trị abc thành giá trị thời gian hiện tại trong file config.
Dòng thứ 3 tiến hành đọc lại và in ra giá trị của abc sau khi đã sửa file config.
Chạy lại thêm một lần nữa :
Vậy là xong. Sử dụng app.config nhanh hơn so với thao tác đọc và ghi file xml nhiều đúng không nào.

Note:
- Cần add Reference System.configuration.
- Sau khi chạy chương trình thì file config bị chỉnh sửa là file config trong cùng thư mục chứa file exe (có dạng TenUngDung.exe.config) chứ không phải file app.config trong project đâu nhé.
- Quá trình sửa file config chỉ chính xác khi build ứng dụng ra thành file exe và chạy. Nếu chạy trong chế độ debug thì bị tình trạng là đọc từ file TenUngDung.exe.config nhưng lại ghi ra file TenUngDung.vshost.exe.config.

2 nhận xét :

  1. Mình là đúng thế này, chạy không báo lỗi gì, bug thấy chạy vào code rồi nhưng vẫn không ghi đc vào file

    Trả lờiXóa
  2. Mình là đúng thế này, chạy không báo lỗi gì, bug thấy chạy vào code rồi nhưng vẫn không ghi đc vào file

    Trả lờiXóa