2017-10-04 70 views
0

我正在更新按鈕單擊時我的配置文件中的一個設置。我發現的代碼很容易理解,我相信它可以這樣工作。但問題在於更新配置文件中的部分或寫入它。更改值更改後的配置文件

所以按鈕點擊它會通過這種方法:

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

    ConfigurationManager.RefreshSection("applicationSettings"); 
} 

這是我的配置文件中的targetet部分:

<applicationSettings> 
    <UpdatePackager.Properties.Settings> 
    <setting name="Sourcepath" serializeAs="String"> 
    <value>D:\PMSmart</value> 
    </setting> 
    <setting name="DestinationpathUpdatePackages" serializeAs="String"> 
    <value>D:\xxx</value> 
    </setting> 
    <setting name="DestinationpathClient" serializeAs="String"> 
    <value>D:\xxx</value> 
    </setting> 
    <setting name="Versions" serializeAs="String"> 
    <value>v5_9_0/v5_9_1/v5_9_2</value> 
    </setting> 
    </UpdatePackager.Properties.Settings> 
</applicationSettings> 

我缺少的東西或做一些錯誤的方式?

+1

*「仍然沒有更新目標值」* - 您如何確定?該設置是否顯示在某個地方,而不是更新或如何? – Sinatr

+0

我有設置寫在配置文件中,我可以檢查是否有變化。並在關閉和重新通過應用程序後沒有任何改變。 – MansNotHot

+0

configuration.Save(ConfigurationSaveMode.Modified);我希望你打開正確的部分名稱並刷新相同的 – Ramankingdom

回答

2

它是.exe的輸出目錄中的.config文件,該文件應該更新,而不是項目文件夾中的文件。

當您構建應用程序並再次運行該應用程序時,修改後的配置文件將被您的項目文件夾中的一個覆蓋。

入住運行期間.config文件中的bin/Debugbin/Release文件夾中的值,你應該看到你UpdateSetting方法執行後,它已被更新。

+0

我還經過一些搜索和同事的建議後得出了這個結論。但遺憾的是我不知道如何更新正確的文件。谷歌搜索後可以找到沒有代碼,我很新c# – MansNotHot

+0

「正確的」文件是輸出目錄中的文件。您的應用程序不應修改您的源文件... – mm8