App.config:ユーザーとアプリケーションのスコープ


90

プロジェクトにApp.configファイルを追加しました。[プロジェクト]> [プロパティ]> [設定]パネルから2つの設定を作成しました-

ここに画像の説明を入力してください

設定を追加するときに、スコープをUserまたはとして定義できることに気付きましたApplication。-

  1. ユーザー
  2. 応用

私のように設定を定義した場合User、それはに行くuserSettingsのセクション、
私は設定を定義した場合などApplicationには、に行くapplicationSettingsのセクション

App.config

<configuration>

    <userSettings>
        <DemoApp.Properties.Settings>
            <setting name="MySetting1" serializeAs="String">
                <value>Value1</value>
            </setting>
        </DemoApp.Properties.Settings>
    </userSettings>

    <applicationSettings>
        <DemoApp.Properties.Settings>
            <setting name="MySetting2" serializeAs="String">
                <value>Value2</value>
            </setting>
        </DemoApp.Properties.Settings>
    </applicationSettings>

</configuration>

ただし、これらの設定には同じ方法でアクセスできます.cs-

コード

string mySetting1 = DemoApp.Properties.Settings.Default.MySetting1;
string mySetting2 = DemoApp.Properties.Settings.Default.MySetting2;

UserApplicationスコープの違いは何ですか?また、どのような状況でこれら2つを選択する必要がありますか?

回答:


72

基本的に、プログラムの実行中にアプリケーション設定を変更することはできません。ユーザー設定は変更できます。次に、これらのユーザー設定を保存して、ユーザーが次にアプリケーションを実行するときに慣れ親しんだ経験を提供する必要があります。

編集:例として、さまざまなモジュールを使用してアプリケーションを作成し、メインモジュールが正しいバージョンのセキュリティモジュールを使用していることを確認する必要がある場合があります。このために、アプリケーションスコープ設定をセットアップします。例:

SecurityModuleVersion  string     Application      v1.21

あなたがセキュリティモジュールをリファクタリングする際いつか後に、あなたはあなたが正しいセキュリティが実装されていることを確認するために展開するときにV1.22に値を変更する場合があります

一方、アプリケーションに色の変更やフォントの変更など、さまざまな「スキン」がある場合は、次のようなユーザー設定をセットアップできます。

ApplicationSkin        string     User              DefaultSkin

次に、ミシェルが好みの肌に変更すると、アプリケーションは彼女の設定を記憶ます。プロパティは次のようになります。

ApplicationSkin        string     User              HelloKittySkin

例を使って説明できますか?
Parag Meshram 2013年

1
デフォルト設定は設定ファイルにあります、そうですか?しかし、保存されたユーザー設定はどこに保存されますか?
カイルデラニー2017年

7
アプリの設定は* .exe.configファイルに保存されます。ユーザー設定はc:\ users \ <userid> \ AppData \ Local \ <companyname> \ <appname> \ <version> \ user.configに保存されます(後者はアセンブリファイルから取得されます)。ロード時には、ユーザー設定がアプリ設定よりも優先されます。
Schrodo_Baggins 2017

71

アプリケーションスコープの設定は読み取り専用であり、設計時またはアプリケーションセッション間で.exe.configファイルを変更することによってのみ変更できます。ただし、ユーザースコープの設定は、プロパティ値を変更するのと同じように、実行時に書き込むことができます。新しい値は、アプリケーションセッションの期間中持続します。Settings.Saveメソッドを呼び出すことにより、アプリケーションセッション間でユーザー設定の変更を永続化できます。

msdnのソース:C#の設定の使用

ユーザー設定は通常、ユーザー設定(アプリの通知設定など)を永続化するために使用されます。アプリケーション設定は、通常、APIキーなどのアイテムに対して行われます。

@kmoteで述べたように、ユーザー設定が実行時に(を介してsettings.Save())変更されて永続化されると、ユーザープロファイルストレージ内のフォルダーに書き込まれます(通常、Windows 7以降ではC:\ Users \ Username \ AppData \ Local \ AppName)。プログラムでファイルの場所を特定するには、この投稿を参照しください。


どんなライブ例も大歓迎です
Parag Meshram 2013年

1
セッション間で.configファイルを編集してユーザー設定を変更できないことも指摘しておく必要があります。
kmote

@kmoteもちろんできます!セッションが閉じている場合は、構成(したがってuserSetting)を変更できます。変更は持続し、セッションを再度開始するとプログラムに反映されます...私は今それをテストしました。
Riegardt Steyn 2017

5
@ヘリアック:私はもっと正確だったはずだ。userSettingsはセッション間で変更できることは正しいです。ただしSettings.Save()、プログラムで(を使用して)変更すると、新しい構成ファイルが作成され、C:\ Users [username] \ AppData \ Local \ Microsoftに非表示/埋め込まれます。その時点から、アプリケーションが起動するたびに、ユーザー設定はそのファイルから排他的に取得され、App.configまたはSettings.settingsで手動で行った変更は無視されます。
kmote 2017年

このユーザー構成ファイルの内容を見つけて表示する方法はありますか?
カイルデラニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.