web-dev-qa-db-ja.com

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

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

enter image description here

設定を追加するときに、スコープを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;

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

83
Parag Meshram

基本的に、プログラムの実行中にアプリケーション設定を変更することはできず、ユーザー設定も変更できます。次に、これらのユーザー設定を保存して、ユーザーが次にアプリケーションを実行するときに使い慣れたエクスペリエンスが表示されるようにする必要があります。

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

SecurityModuleVersion  string     Application      v1.21

しばらくしてセキュリティモジュールをリファクタリングすると、yoがデプロイされたときに値がv1.22に変更され、正しいセキュリティが実装されていることを確認できます。

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

ApplicationSkin        string     User              DefaultSkin

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

ApplicationSkin        string     User              HelloKittySkin
64
mcalex

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

Msdnのソース: C#の設定を使用

ユーザー設定は、一般的にユーザー設定(アプリ通知設定など)を保持するのに役立ちます。一般に、アプリケーション設定はAPIキーなどの項目に使用されます。

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

70
CalC