2016-04-20 17 views
0

何らかの理由でアプリケーションが読み込まれると、アプリケーションパスのprogramname.exe.configの設定が読み込まれますが、Properties.Settings.Default .Save()設定はAppdata/local/program/version/user.configに保存されます
私のアプリケーションをuser.configからロードするにはどうしたらいいですか?C#の設定は.exe.configからロードされていますが、user.configに保存されます

programname.exe.configを削除した場合は、プログラムが次に実行されるときに再生成されます。保存する前に

settings

programname.exe.config and user.config

+0

デフォルトの動作は、説明したとおりです。ユーザー設定は ' .config'ファイル(ùserSettings'セクションにあります)のデフォルト値を取得しますが、' user.config'に書き込まれます。それらを再び読むと、 'user.config'があれば読み込み、そうでなければ' .config'から読み込みます。私はなぜ 'user.config'があなたのために読み込まれているのか分かりませんが、残りは普通の動作です。 – Jcl

+0

' configSections/SectionGroup' xmlをスクリーンショットの 'user.config'から削除しましたか? – Jcl

+0

コードを共有できますか? – Dhanuka777

答えて

0
あなたがこれを行う必要

Properties.Settings.Default.Upgrade() 

+1

ちょうど覚えている - あなたがVSでデバッグしている場合、あなたがビルドを行うたびに設定ファイルは上書きされます。更新された設定は、アプリケーションの実行間では保持されません。 – Dhanuka777

1

これは正当な動作です。 Userの設定はユーザー固有のもので、ユーザープロファイルに保存されます。ユーザーが彼のためにいくつかの設定をカスタマイズする場所を想像してください。そして、それらは他のユーザーによって上書きされています。確かに良いユーザーエクスペリエンスではありません。

ユーザー設定の読み込みは同じです。

たとえばあなたがqualityと呼ばれるUserSettingを持って、あなたは次のように、この設定を読み取ることができます -

var qualitySettingValue = Properties.Settings.Default.quality; 

...そして、あなたは、この値を変更するなど、新しい設定保存することができます -

Properties.Settings.Default["quality"] = "New Quality Settings"; 
Properties.Settings.Default.Save(); 

を次回この値をこのように読むとき -

var qualitySettingValue = Properties.Settings.Default.quality; 

qualitySettingValueは、更新された値を持っています -

Applicationレベル設定は、すべてのユーザーに共通ですApplication.exce.configファイルに保存されます。

関連する問題