2012-01-16 67 views
2

我目前正在WPF/.Net項目中工作, 在此項目中,用戶可以選擇完全更改應用程序的蒙皮, 我正在嘗試編寫使用配置管理, 提交後的設置,但我似乎並沒有能夠將新值添加到app.config文件,這裏是我的下如何以編程方式更新和保存app.config應用程序設置

Public Sub SetApplicationSetting(pstrAppSettingName As String, pstrAppSettingValue As String) 
    Dim lobjconfig As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 

    lobjconfig.AppSettings.Settings.Add(pstrAppSettingName, pstrAppSettingValue) 
    lobjconfig.Save(ConfigurationSaveMode.Full) 
    ConfigurationManager.RefreshSection("appSettings") 
End Sub 

任何想法的方法?

現在街道上的字是我不能添加到什麼是已經存在,所以我吼聲,也許我應該更新, 但仍沒有之前先刪除它,這裏是新代碼

Dim lobjconfig As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 

      lobjconfig.AppSettings.Settings.Remove(pstrAppSettingName) 
      lobjconfig.AppSettings.Settings.Add(pstrAppSettingName, pstrAppSettingValue) 


       lobjconfig.AppSettings.Settings.CurrentConfiguration.Save() 
      lobjconfig.Save(ConfigurationSaveMode.Full, True) 

     ConfigurationManager.RefreshSection("appSettings") 
+0

你能分享當你嘗試時會發生什麼嗎? – 2012-01-16 13:14:55

+0

它貫穿每一個everyline罰款,我也檢查了pstrAppSettingValue和它的存在,但不知何故它不會被添加到app.config,(我也稍微調整了它,並在保存行的末尾添加了一個True來強制它保存全部)但是什麼也沒有 – 2012-01-16 13:19:22

+0

咦?你只是說pstrAppSettingValue「在那裏」,然後「不會被添加」......這是什麼? – 2012-01-16 13:20:58

回答

2

我的猜測是,你正在試圖改變所有用戶(ConfigurationUserLevel.None)的配置和您可能沒有這樣做的權利。如果失敗了,我會期待一個例外,並且你沒有說有人拋出,所以我可能會走錯路。

要找到罪魁禍首,你可以試試ConfigurationUserLevel.PerUserRoamingAndLocalConfigurationUserLevel.PerUserRoaming,看看是否更好。

或者,但我懷疑它的確與衆不同,你可以得到從某一個位置的配置特別是通過以下行:

Configuration config = ConfigurationManager.OpenExeConfiguration(
          Assembly.GetEntryAssembly().Location); 
+0

這個答案看起來不錯,但現在我稍微糊塗瞭如何輸入文件的路徑,如果文件在項目內的bin文件夾中,你能幫忙嗎? - 預先感謝回答 – 2012-01-16 13:39:09

+1

@AshShafiee:等等,你是否試圖更新配置文件,而不是運行時使用的配置文件?運行時,app.config的位置與項目位置中的位置不同。在使用F5運行期間,應用程序將被複制到構建目錄和配置文件(yourname.exe.config)中。可以在那裏找到更改,或者在系統位置找到更改。 – Abel 2012-01-16 15:20:19

+0

爲了更清楚地說明:在使用F5(調試)或Ctrl-F5運行時通過代碼更改配置文件將不會更改Visual Studio項目中的app.config。 – Abel 2012-01-16 15:21:55

0

在我看來,如果你沒有'皮膚'文件,AppplicationSettings是這個的首選方式。它們允許每個用戶和應用程序範圍的設置。 http://msdn.microsoft.com/en-us/library/k4s6c3a0.aspx

更新:我想你可能會發現此鏈接有用的創建設置 http://msdn.microsoft.com/en-us/library/ms171565.aspx

你也可以使用設計器來快速地從用戶特定的太應用範圍的設置更改。 http://msdn.microsoft.com/en-us/library/aa730869.aspx

也有許多鏈接在這裏SO https://stackoverflow.com/search?q=applicationsettings+c%23

+2

我知道我正在使用應用程序設置哈哈,所以你只是在這裏指出一個事實, – 2012-01-16 13:22:30

+0

是什麼,這(「ConfigurationUserLevel.None)」然後? – 2012-01-16 13:28:59

+0

是的。抱歉。起初,我以爲你試圖破解應用程序的app.config文件,作爲其他答案表明你的用戶可能沒有權利。也許你最好在每個用戶保存皮膚項目,你有權保存它們。 – kenny 2012-01-16 13:33:44

1

運行在雙某些位置的應用程序點擊直接或在Visual Studio中按Ctrl + F5,設置上的更改將持久化到構建調試文件夾下的應用程序配置文件(yourapp.exe.config)。通過測試,通過F5(調試)和Ctrl + F5(無需調試運行)在VS中運行應用程序在應用程序配置文件上的更改方面有所不同。

相關問題