2009-06-28 26 views
8

ユーザースコープの設定がいくつかありますが、何らかの理由で.exe.configファイルに保存されていません。私は以下を行います:私のアプリケーション設定が永続化しないのはなぜですか?

Properties.Settings.Default.Email = "[email protected]"; 
Properties.Settings.Default.Save(); 

しかし、私はデバッグフォルダ内の設定ファイルを見ていますが、それでも私はVisual Studioで設定したデフォルトです。私はこれを間違っているのですか?

答えて

13

ユーザー設定はユーザー固有のものなので、システム全体の.exe.configファイルには保存されません。 LocalSettingsProviderのドキュメントから

アプリケーションスコープの設定と デフォルトのユーザースコープの設定が は同じディレクトリに作成 ある application.exe.configという名前のファイルに格納されています実行可能ファイルは です。アプリケーション 構成設定は読み取り専用です。 特定のユーザーデータは という名前のファイルusername.configに保存され、ユーザーのホームディレクトリ に格納されます。 UserSettingsTestアプリケーション用ので

ちょうど私が道になってしまったデバッガ(したがってvshostビット)の下でVSから実行:

C:\Users\Jon\AppData\Local\UserSettingsTest 
    \UserSettingsTest.vshost.e_Url_pdqoppugkz1vaawbhwkkcu5ibxpi2fgu 
    \1.0.0.0\user.config 
+1

私はWinXPを持っていますが、C:\ Documents and Settings \ Ryan \アプリケーションデータ。これは正しい場所ですか? – ryeguy

+0

ええと、XPではわかりません。午前中に試してみる。 –

+3

XPはC:¥Documents and Settings¥Ryan¥Local Settings¥Application Dataになります – csjohnst

0

内でのアプリケーションデータの下に保存されたすべてのユーザースコープの設定をアプリケーションのバージョンと名前を示すフォルダ。

「アプリケーション設定」ダイアログで「同期」をクリックすると、これらのフォルダが表示されます。一般的にVistaでは

  • C:\ユーザー[CurrentUserに] \のAppData \ローカル[会社名] [AppNameは] \バージョン
  • C:\ユーザー[CurrentUserに] \のAppData \ローミング[会社名] [AppNameは] \バージョン

が原因現在のユーザーUACと関連している設定にこの方法を完了します。 Vistaでは、アプリケーション全体の設定が設定ファイルに保存されていないこともわかります。

[CompanyName]と[ProductName]は、アセンブリ情報の設定に含まれています。

15

バージョン番号(1.0。*)を自動的に生成するようにアセンブリ情報を設定している場合は、アプリケーションをデバッグするたびにバージョン番号が異なるため、常に新しいファイルが作成されます。

これはあなたが設定ファイルでアップグレードを実行する必要がありますケースの場合:

Properties.Settings.Default.Upgrade() 

ます。また、デフォルトでtrueNeedsUpgradingの設定を設定するので、アップグレードを実行した後、それをfalseに設定することができますアプリケーションが起動するたびにバージョン番号を変更していないエンドユーザは常にアップグレードされません

+0

は、アップグレードと呼ばれるメソッドがあることを知らなかった。 –

+1

私はここでこのアプローチを使って成功しました:http://bytes.com/topic/c-sharp/answers/522191-how-maintain-user-config-settings-when-upgrading –

+0

素晴らしい答え、そしてエレガントなニーズのアップのヒント! – DefenestrationDay

関連する問題