更新: ASP.NET Core Land では、構成はこれらのいずれかを介して管理されなくなりました - az をオンにした Travis Illig からのこの素晴らしい記事を参照してください。これは事実上、これらすべてのスーパーセットです。Microsoft.Extension.Configuration
Microsoft.Extensions.Configuration.Binder
設定 (.settings セットと の両方Configuration.AppSettings
) は、.config ファイルに [他の多くのものと共に] 保存されます。
違いは、[.NET 2.0 / VS2005 で追加された] .settings のものは、一緒に属する設定のセットの上に強く型付けされたクラスをレイヤー化するのに対し、Configuration.AppSettings
文字列を取得できるようにするだけで、変換を強制し、変換を行わないことです。デフォルトの概念があります。(Configuration クラスは実際には、これを反映するためにサイド アセンブリに入れられています。必要な場合は、System.Configuration への参照を明示的に追加する必要があります)。
プロジェクトに .settings を追加すると、設定を格納するために app.config が追加されます (まだ持っていない場合)。コンポーネント/アプリケーションの設定リストを変更するたびに、設定を読み取るクラスが自動的に生成されます。
.Settings のその他の機能は、一部の設定をユーザー固有として指定する機能です (また、1 回の呼び出しでユーザー固有の設定を保存することもできます)。
.Settings を使用する最も良い理由は、一般に、プロパティの使用法に従うことで、コード ベースで誰がどの設定を使用しているかを明確に識別できるようになるためです (各セットは XML ファイル内の個別のブロックです)。Configuration.appSettings
その性質上、よりグローバルです。これは単なるプロパティのバッグであり、どの DLL、サブシステム、またはクラスが特定の設定エントリに依存しているかわかりません。詳細については、Steven Smith のこのブログ投稿を参照してください。
最後に、設定管理についてまだ十分に読んでいない場合は、このテーマに関する Rick Strahl の記事の完全性や膨大な量のアイデアや角度に勝るものはありません。
補足: ASP.NET vNext 構成もあり、この記事で概説されていますが、これは非常に柔軟で、構成設定の管理に異なる角度を提供します。