.NET 2.0 / VS 2005 對 System.Configuration 進行重大升級,引入強型別設定、應用程式/使用者範圍隔離、屬性編輯器 GUI,徹底改善桌面與 Web 應用的設定管理體驗。
| 特性 | 舊版痛點 | 新版方案 |
|---|---|---|
| 強型別 | 僅支援字串,需手動轉型/剖析 | 內建基本類型、連線字串、URL 等序列化,自動轉型 |
| 範圍隔離 | 所有設定混雜單一檔案 | Application 範圍:唯讀、機器級 (連線字串) User 範圍:可寫、使用者級 (視窗位置、MRU),自動存入 user.config |
Settings.settings 開啟設計介面app.config:設計時預設值 (Application 範圍)Settings.Designer.cs:Settings 類別繼承 ApplicationSettingsBase,每個設定對應強型別屬性,標註 [UserScopedSettingAttribute] 或 [ApplicationScopedSettingAttribute]Properties.Settings.Default.PropertyName 存取private void PopulateListView() {
var settings = Properties.Settings.Default;
foreach (SettingsProperty prop in settings.Properties) {
// 依範圍過濾 (All/Application/User)
bool match = ...;
if (match) {
var item = new ListViewItem(prop.Name);
item.SubItems.Add(prop.PropertyType.ToString());
item.SubItems.Add(settings[prop.Name]?.ToString());
item.Tag = prop;
listViewSettings.Items.Add(item);
}
}
}
修改 User 範圍設定時,框架自動在使用者設定檔目錄建立/更新 user.config:
路徑包含版本號,確保版本升級時設定隔離不衝突。
.NET CF 2.0 Beta 文件雖列出 System.Configuration 命名空間,但實際不支援,僅能靠登錄檔或自訂 XML 處理,期待正式版補齊。
VS 2005 設定系統實現「設計時強型別、執行時範圍隔離、使用者資料自動遷移」,配合 GUI 編輯器,讓設定管理從易錯的 XML 手工操作進化為型別安全的屬性存取,是桌面應用不可或缺的生產力工具。