2010-03-11 38 views
0

考慮一個C#應用程序,它具有許多用戶設置,其中一些被用於主動使用和更新,而另一些則始終爲只讀。在哪種情況下,這種只讀設置屬性最終會在每個用戶維護的user.config中結束?設置以user.config結尾,即使它們未被修改爲從app.config中讀取

我看到一個有趣的行爲,應用程序只讀取的幾個用戶配置設置最終在user.config中以相同的未修改的默認值結束。我的應用程序是版本控制的,所以當部署下一個版本並且某些只讀設置根據設計而改變時,它們不會被新版本拾取,因爲ApplicationSettingsBase.Upgrade()會選擇本地過時的值。

基本上,如果應用程序從不修改特定的設置屬性,它是如何以及爲什麼最終在user.config?

此外,如何在將來升級時修復損壞並從user.config中清除現有的只讀屬性?

回答

0

沒有看到保存在user.config文件中的屬性的代碼我只能猜測,但我會建議你已經有一些代碼寫入這些值,不管它們是否已經從默認值改變,或者即使他們可以從默認值改變。

你有這樣的:

Properties.Settings.Default.Property1 = this.SomeValue; 
Properties.Settings.Default.Property2 = this.ReadOnlyValue; 
Properties.Settings.Default.Save(); 

至於你另外的問題,我認爲Save覆蓋現有文件,而不是僅僅進行更新。

+0

我只有「var x = Settings.Default.Property1」,僅此而已,沒有什麼不足。 Property1基本上只讀一次。不知何故它最終在user.config中。我非常瞭解這個屬性的目的,所以我確信它不會寫入任何我已經用啞搜索和使用Resharper來檢查的地方。 我可能犯了一個錯誤的一件事是在開發過程中經常更改app.config,而不反映Settings.settings或Settings.Designer.cs中的更改。這歸結爲DefaultSettingValueAttribute與以前的值。這可能很重要嗎? – wpfwannabe 2010-03-11 13:03:26

相關問題