Pages

2015-02-25

App.exe.config設定檔使用細節

VS開發環境提供一個簡易好用的Settings Designer工具, 可以將軟件設定值寫入App.exe.config檔案裏,並自動生成一個強型別的Settings類別,方便在程序裏讀寫。

Solution Explorer

this.label1.Text = Properties.Settings.Default.SettingName1;

使用強型別的屬性讀取方式雖簡易,但要特別注意此Setting Property讀取效能的陷阱,不要直接在大量loop裏讀取,先讀取到區域變數裏。

Designer裏的設定值Scope有兩類。Application類的值唯讀不能改,讀取exe存放在同階目錄下之App.exe.config。User類的雖可修改,但其值儲存在C:\Users\[UserName]\AppData\Local\[AppName]\[AppName_EvidenceType_EvidenceHash]\[Version]\user.config,該位置考量多User的安全權限,因此存放路徑不能改變,但這違反了綠色軟件的同目錄原則。

Setting Designer

因此統一使用Application類的設定值是比較好的,當要修改其值時,另外用XmlDocument類別修改檔案xml內容即可,其檔案路徑為「AppDomain.CurrentDomain.SetupInformation.ConfigurationFile」。
以下是自訂處理類別的範例:

AppConfigHelper settings = new AppConfigHelper(file);
settings["a"] = "123";
string s1 = settings["b"];
settings.Save();

若程式在讀取設定值時發生「System.Configuration.ConfigurationErrorsException」例外錯誤,除了注意App.exe.config是否格式錯誤外,也有可能是之前舊user.config檔仍存在造成的衝突,刪除該檔即可。

No comments: