首頁 > 後端開發 > C++ > 為什麼 `ConfigurationManager.AppSettings.Set` 不保留 App.Config 更改?

為什麼 `ConfigurationManager.AppSettings.Set` 不保留 App.Config 更改?

Patricia Arquette
發布: 2024-12-31 10:32:17
原創
931 人瀏覽過

Why Doesn't `ConfigurationManager.AppSettings.Set` Persist App.Config Changes?

App.Config 值修改困境

在提供的程式碼片段中,請嘗試修改 App.Config 檔案中的值。然而,這種修改並沒有如預期的那樣持續存在。為了找出這個問題的根源,讓我們深入研究所提供的程式碼並探討潛在的問題。

程式碼片段:

lang = "Russian";
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
     System.Configuration.ConfigurationManager.AppSettings.Set("lang", lang);
}
登入後複製

確實修改了應用程式設定檔。但是,正如回應中所強調的那樣,此修改僅發生在記憶體中,不會持久保存到實體設定檔中。

解決此問題的關鍵在於認識到 ConfigurationManager.AppSettings.Set("lang", lang) 僅進行臨時的記憶體中變更。要將這些變更保留到 App.Config 文件,需要執行額外的步驟。

回應引入了專為控制台應用程式自訂的修訂後的程式碼片段:

class Program
{
    static void Main(string[] args)
    {
        UpdateSetting("lang", "Russian");
    }

    private static void UpdateSetting(string key, string value)
    {
        Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        configuration.AppSettings.Settings[key].Value = value;
        configuration.Save();

        ConfigurationManager.RefreshSection("appSettings");
    }
}
登入後複製

在此程式碼中:

  1. ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None) 用於以可寫入方式開啟App.Config檔案state.
  2. 然後使用configuration.AppSettings.Settings[key].Value = value修改所需的鍵值對。
  3. 最重要的是,呼叫configuration.Save()方法將這些變更儲存到 App.Config 檔案中。
  4. 最後,使用 ConfigurationManager.RefreshSection("appSettings") 刷新載入的 App.Config部分,確保任何後續檢索操作讀取更新的值。

透過利用此更新的程式碼,對 App.Config 檔案所做的值修改現在已成功保留,解決了問題並允許所需的語言設定變更。

以上是為什麼 `ConfigurationManager.AppSettings.Set` 不保留 App.Config 更改?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板