管理應用程式設定
應用程式設定可以讓您以動態方式儲存及擷取應用程式的屬性設定和其他資訊。也可以讓您維護用戶端電腦上的自訂應用程式以及使用者偏好設定。通常這是執行應用程式的關鍵資料 (例如連接字串),而且您不想直接包含在應用程式的程式碼中。您可能會想儲存兩個不同的資料庫連接字串 (Connection String),然後在執行階段根據電腦的位置擷取其中一個。或者,您可能想要儲存使用者的色彩偏好設定,然後在下一次執行應用程式時擷取這些設定。
請注意應用程式設定Visual Studio ,它會取代在舊版的 「 動態屬性 」 功能的功能。
每一個應用程式設定都必須具備唯一的名稱。這個名稱可由字母、數字或底線的任意組合,但是不能以數字開頭,也不能包含空格。透過 Name 屬性即可變更名稱。
應用程式設定可以儲存為任何資料型別,只要該型別為 XML 可序列化,或是具有可實作 ToString/FromString 的 TypeConverter。最常見的型別是 String、Integer 和 Boolean,不過您也可以將值儲存為 Color、Object 或連接字串。
應用程式設定也包含一個值。該值是透過 [值] 屬性來進行設定,而且必須符合設定的資料型別。
此外,應用程式設定也可在設計階段繫結到表單或控制項的屬性。
應用程式設定根據範圍可分成兩種類型:
應用程式範圍的設定可用於 Web 服務的 URL 或資料庫連接字串等資訊。這些值與應用程式相關聯。因此,使用者無法在執行時期變更。
使用者範圍的設定可用於保留表單最後一個位置或字型偏好設定等資訊。使用者可以在執行階段變更這些值。
您可以使用 [範圍] 屬性變更設定的類型。
專案系統會將應用程式設定儲存在兩個 XML 檔案中:一個是您建立第一個應用程式設定時所建立的 app.config 檔案,另一個是在執行時期,當執行應用程式的使用者變更任何使用者設定的值時,所建立的 user.config 檔案。請注意,使用者設定中的變更不會寫入磁碟中,除非應用程式明確呼叫方法以執行這個動作。
在設計階段建立應用程式設定
在設計階段建立應用程式設定有兩種方式:使用 [專案設計工具] 的 [設定] 頁面,或是使用表單或控制項的 [屬性] 視窗,這個視窗可讓您將設定繫結至屬性。
當您建立應用程式範圍的設定 (例如資料庫連接字串或伺服器資源參考) 時,Visual Studio 會將設定儲存在 app.config 中,並標示 <applicationSettings> 標記(連接字串儲存在 <connectionStrings> 標記之下)。
當您建立使用者範圍的設定 (例如預設字型、首頁或視窗大小) 時,Visual Studio 會將設定儲存在 app.config 中的 <userSettings> 標記下。
安全性提示 |
---|
當您將連接字串儲存在 app.config 中時,請特別謹慎,以免洩露連接字串中的重要資訊 (例如密碼或伺服器路徑)。 如果您是從外部來源取得連接字串資訊 (例如使用者提供使用者 ID 和密碼),請務必確保您用來建構連接字串的值不能包含會變更連接行為的其他連接字串參數。 您可以考慮使用 [受保護的組態] 功能,將組態檔中的重要資訊加密。如需詳細資訊,請參閱Securing Connection Strings。 |
注意事項 |
---|
由於類別庫 (Class Library) 沒有組態檔模型,因此應用程式設定不適用於類別庫專案。但是 Visual Studio Tools for Office DLL 專案例外,它可以有組態檔。 |
使用自訂設定檔
您可以在專案中加入自訂設定檔,以便於管理設定群組。單一檔案中所包含的設定會以單元方式載入和儲存。因此,將設定儲存在經常使用及不常使用群組的個別檔案中,可以節省載入和儲存設定的時間。
例如,您可以將檔案 (如 SpecialSettings.settings) 加入至專案中。雖然 SpecialSettings 類別不會出現在 My 命名空間中,但是 [檢視程式碼] 仍可讀取包含 Partial Class SpecialSettings 的自訂設定檔。
[設定設計工具] 首先會搜尋專案系統所建立的 Settings.settings 檔案,也就是 [專案設計工具] 在 [設定] 索引標籤中所顯示的預設檔案。Visual Basic 專案的 Settings.settings 位於 [My Project] 資料夾,而 Visual C# 專案的這個檔案則位於 [Properties] 資料夾。然後 [專案設計工具] 會搜尋專案的根資料夾中其他設定檔。因此,您應該將自訂設定檔放在此。如果您將 .settings 檔案加入至專案中的其他地方,[專案設計工具] 就無法找到檔案。
於執行階段在 Visual Basic 中存取或變更應用程式設定
在 Visual Basic 專案中,您可以使用 My.Settings 物件在執行階段存取應用程式設定。請在 [設定] 頁中,按一下 [檢視程式碼] 按鈕,以檢視 Settings.vb 檔案 Settings.vb 會定義 Settings 類別,讓您用來處理 Settings 類別上的下列事件:SettingChanging、PropertyChanged、SettingsLoaded 和 SettingsSaving。請注意,Settings.vb 中的 Settings 類別是部分類別,只會顯示使用者所擁有的程式碼,不會顯示整個產生的類別。如需使用 My.Settings 物件存取應用程式設定的詳細資訊,請參閱存取應用程式設定 (Visual Basic)。
使用者在執行階段所變更之任何使用者範圍的設定值 (例如表單的位置),都會儲存在 user.config 檔案中。請注意,預設值仍然是儲存在 app.config 中。
如果您在執行階段 (例如在測試應用程式時) 變更了任何使用者範圍的設定,想要將這些設定重設為預設值,請按一下 [同步處理] 按鈕。
強烈建議您使用 My.Settings 物件和預設的 .settings 檔來存取設定。因為您可以使用 [設定設計工具] 將屬性指派給設定,並且會在應用程式關閉前自動儲存使用者設定。然而,Visual Basic 應用程式可以直接存取設定。在這個情況下,您必須存取 MySettings 類別,並且使用專案根目錄下的自訂 .settings 檔案。您也必須在結束應用程式之前儲存使用者設定,如同您針對 C# 應用程式所做的一樣 (將於下一節中說明)。
在 Visual C# 中,於執行階段存取或變更應用程式設定
在除了 Visual Basic 之外的語言中 (例如 Visual C#),您必須直接存取 Settings 類別,如下列 Visual C# 範例所示。
Properties.Settings.Default.FirstUserSetting = "abc";
您也必須明確呼叫此包裝函式類別 (Wrapper Class) 的 Save 方法,以保存使用者設定。這通常在主要表單的 Closing 事件處理常式中執行。下列 Visual C# 範例會示範呼叫 Save 方法。
Properties.Settings.Default.Save();
如需如何建立新的應用程式設定並與表單屬性進行繫結的特定範例,請參閱 HOW TO:使用設計工具建立應用程式設定。如需透過 Settings 類別存取應用程式設定的一般資訊,請參閱應用程式設定概觀。