2009-05-26 22 views
67

私は実際に.NET関連のものの学習段階にあり、アプリケーションを保存する方法を模索していました。 XMLファイルの設定を保存する自分のクラスを作成した後、.NET自体がアプリケーション設定の保存をサポートしていることがわかりました。app.configファイルとXYZ.settingsファイルの違いは何ですか?

しかし、私はそれを行う2つの方法を見つけました。 Visual Studio 2008で新しい項目ダイアログを開くと、設定ファイル(.settings)または設定ファイル(.config)を作成するオプションが提供されます。両方のシナリオとどのシナリオを使用すべきかの違いは何ですか?

答えて

51

設定(.settingsのセットとConfiguration.AppSettingsの両方)は.configファイルに保存されます。

違いは、.NET 2.0/VS2005で追加された.settingsものは、一緒に属している設定のセットの上に強く型付けされたクラスをレイヤーするのに対し、Configuration.AppSettingsでは、どのコンバージョンも、デフォルトの概念を持っていません。 (これを反映するためにConfigurationクラスはサイドアセンブリに実際にシャントされています。必要なら、System.Configurationへの参照を明示的に追加する必要があります)。

プロジェクトに.settingsを追加すると、既に設定がない場合に設定を格納するapp.configが追加されます。設定を読み込むクラスは、コンポーネント/アプリケーションの設定リストを変更するたびに自動的に生成されます。

設定のその他の機能は、ユーザー固有の設定を指定する機能です(1回の呼び出しでユーザー固有の設定を保存することもできます)。

設定を使用する最も良い理由は、一般に、プロパティの使用法に従うことでコードベースのどの設定を使用しているかを明確に識別できることです(各セットはXMLファイル内の別のブロックです) 。 Configuration.appSettingsは、それが本質的にグローバルである - それはプロパティの単なるバッグであり、特定の設定エントリに依存するDLL、サブシステム、またはクラスを知りません。詳しくはthis blog post from Steven Smithを参照してください。

最後に、まだ設定管理について十分に読んでいない場合、アイデアやアングルの完全性や完全性については、this Rick Strahl post on the subjectを打つことはありません。

ASIDE:ASP.NET vNext Configurationのものもあります。outlined in this articleは非常に柔軟性があり、構成設定の管理にはさまざまな角度があります。

+0

お返事ありがとうございます。ちょうど1つの点についてちょっと混乱しました:2種類の設定があります。1つはアプリの設定、もう1つはユーザーの設定です。両方のタイプの設定が設定ファイルに保存されている場合、ユーザごとにユーザ設定はどのように異なりますか? – Hemant

+2

申し訳ありませんが、その言及を省略します。ユーザー設定は、デフォルトが存在する理由の1つです(ユーザーがまだアプリを使用していない場合は、変更が保存されるまでデフォルトが適用されます)。ユーザー設定は、ユーザーのプロファイル(Users \ XXX)ディレクトリ内の別の構成ファイルに格納されます。ユーザー設定も更新することができます(システムAPIはデフォルトのAPIを使用することはできません。これらはProgram Filesには存在しません)。 –

+0

この場合、構成マネージャはどこに適合しますか?私の設定がどこに住んでいるのかを教えてもらうことができませんでした。 –

3

設定ファイルは、さまざまな設定とデフォルト値を指定するリソースファイルです。

値自体は、アプリケーション構成ファイル(.configファイル)で構成されます。

設定ファイルは展開されないため、設定ファイルを設定する必要があります。

+0

私はpickyモードになっています(自分の投稿を更新したばかりです).settingsファイルはXMLファイルですが、リソースとしてはそれほど大したものではないと確信しています。また、ユーザー固有の値は、.configファイルの外にある別の領域に格納されます。設定ファイルに何も指定されていない場合、生成された設定クラス内の属性が値のデフォルト設定を管理します。 –

+0

Settings.settings xmlファイルが '展開されると、Settings.Designer.csファイルはアプリケーションにコンパイルされますか? –

0

app.configファイルは、アプリケーションと同じディレクトリに保存されています。通常のユーザーには書き込み権限がありません(「プログラムファイル」など)。

設定ファイルは、ユーザー「AppData」ディレクトリ(r/w権限を持っている)に保存する必要があります。

したがって、ユーザーが設定できるオプションの設定ファイルを使用してください。

+0

他の回答によれば、正しくはない:https://stackoverflow.com/a/909712/199364、https://stackoverflow.com/a/13072966/199364 '.settings'(およびVisual Studioの' Settings'サポート)ワンタイムアプリケーション設定とユーザ単位設定の両方に使用できます。 '.settings'は実行時に存在しません。実行時に存在するのは、appフォルダの 'app.config'と、ユーザのデータフォルダの' .config'です。 – ToolmakerSteve

関連する問題