24

アプリケーション設定(ユーザー設定ごとではなく) と .config ファイル <appsettings>をいつ使用するかについての推奨事項はありますか?

更新
どちらも効果的にキー/値ストアであるため、より細かく重要な違いのいくつかを理解しようとしています。たとえば、web.config の appsettings を変更すると、Web アプリケーションがリサイクルされることがわかっています。

設定はしばらくの間 .NET にありましたが、私は気にしてそれらを見ていませんでした.1 つがやや冗長であるか、両方を同時に使用するのは意味がありません..理解と理由を探しています。

4

8 に答える 8

16

質問は少し古いですが、私はそれに出くわし、他の誰かがそれに出くわした場合に備えて、いくつかの明確さを追加すると考えました...

設定オプション (生の <appSettings> セクションとは対照的に) は、フレームワークで強力にサポートされています。

  1. 設定は、必要に応じてコードによって解析される文字列としてすべてが返されるのではなく、厳密に型指定されます (つまり、bool、int、ConnectionString など)。

  2. 設定は、a) 内部またはパブリック、および b) ユーザーごとまたはアプリケーションごと (後者は基本的にマシンごとを意味します) にスコープを設定できます。

  3. アプリケーションは、設定を変更するための独自のインターフェイスを提供する必要がありますが、設定プロパティはコードで読み取り/書き込み可能であり、生成されたクラスは変更を保存する機能を提供するため、それはかなり簡単です。

  4. デプロイされた app.config (または web.config) ファイルには、既定値のみが保存されます (実行時の変更がどのように処理されるかについては、以下を参照してください)。つまり、実行時に設定を変更して保存しても、.config ファイルは変更されません。ひいては、アプリケーションの再起動は発生しません。

  5. 実行時の変更は、選択したスコープに応じて、ローカルの場所 (c:\ProgramData.. または c:\Users\MyUser\AppData\Local.. のいずれか) に保存されます。そのため、アプリケーションの後続のリリースでは、以前にカスタマイズされた値が安全に保存されるため、以前にカスタマイズされた値を破棄することを恐れることなく、新しい設定を安全に導入できます。

物事を少し片付けるのに役立つことを願っています。

于 2012-04-25T14:18:21.867 に答える
6

これまでの回答から見過ごされがちな点の 1 つは、.config ファイルはTransformation filesを使用して変換できるということです。これらはデフォルトで (Visual Studio の) Web.config ファイルで使用でき、SlowCheetah - Visual Studio の XML 変換アドインを使用して任意の .config ファイルで有効になります (SlowCheetah はプレビューアも追加し、ビルド時だけでなくビルド時に変換を適用します)。展開します。

于 2013-02-01T17:43:09.157 に答える
3

アプリケーション設定と構成ファイルの appSettings セクションはキーと値のペアに制限されており、単純な設定に適していますが、より堅牢なデータの永続性が必要な場合は、アプリケーションのカスタム構成セクションを作成することを検討してください。カスタム構成セクションの作成に関するstackoverflowの記事は次のとおりです

楽しみ!

于 2010-06-04T16:47:15.823 に答える
2

アプリケーション設定を入力できます。これは、appsettings と比較してプラスです。そして、それらにアクセスする方法は、配列から値を取得するよりももう少しきちんとした (プロパティ) 方法です。

また、インターフェイスを使用して、設定をデータベースに保存する設定クラスを実装できます。

于 2010-06-04T16:56:29.587 に答える
1

以前に行ったことがあるのは、永続化する設定に適したプロパティを含むクラスを作成することです。次に、クラス インスタンスは XML でファイルにシリアル化され、後で逆シリアル化して、同じオブジェクトとプロパティ値を元のままに戻すことができます。また、web.config/app.config ファイルに書き込む場合は、アプリケーションをリサイクルする必要はありません。

この方法で、厳密に型指定されたアプリケーション設定を取得でき、キーと値について心配する必要はありません。アプリケーション内でユーザーが設定可能なオプションを提供したいとき、これはかなりうまくいきました。

于 2010-06-05T06:07:59.743 に答える
1

注意すべきことの 1 つは、構成ファイルが現在書き込み可能であるという事実にもかかわらず、ClickOnce を介して展開している場合、それらは ClickOnce で展開されたアプリに含まれていないことです。

したがって、経験則として、環境構成はすべて app.config に入れます。ユーザー構成に関するものはすべて [設定] に移動します。

線が少しぼやけていることがあるので、それらのあいまいなものについては、自由に移動できるように静的アクセサー メソッドでラップします。

于 2010-06-04T17:51:14.220 に答える
0

設定も気にしたことがないので、探索するテストアプリを作成しました。ここにいくつかのランダムな発見があります。

  • 設定は、コードで参照する明示的なプロパティ/名前を提供しますが、コンパイルされたアプリケーションを逆アセンブルすると、ゲッターは内部ディクショナリで値を検索するだけです。
  • 設定は、独自のセクションで .config ファイルに吐き出されます。.config ファイルを編集して値を変更できるように見えますが、そうではありません。次の点で説明されています。
  • 上記のリンクのドキュメントによると、値を取得する唯一の方法は使用することProperties.Settings.Default.myColor = Color.AliceBlue;ですが、これは常にデフォルト値を提供し、プロパティの属性としてコードにコンパイルされます。(Reflector を使用してこれを確認しました。getter には次のタグが付けられています: [ApplicationScopedSetting, DefaultSettingValue("asdf"), DebuggerNonUserCode])。
  • 設定は強く型付けされています。コンパイラは、オブジェクトのシリアル化を自動的に処理します (ただし、これはほんの数行のコードです)。

全体として、それらは非常に似ているように見えます。設定ダイアログは、設計時に値を構成するための設計者のような方法を提供します。また、シリアル化も処理します。デフォルト値の代わりに実際の値を取得する方法があると確信しています.値。) ただし、現在の値を参照する方法は現在わかりません。

于 2010-06-04T17:40:34.863 に答える
0

アプリケーション設定はアセンブリにコンパイルされません。

よくわかりませんが、アプリケーション設定の既定値はアセンブリにコンパイルされていると思いますが、これらは構成ファイルでオーバーライドできます。

アプリケーション設定は、特に VB.Net から、より使いやすい方法として作成されたと思いますが、大きな違いはないと思います。少なくとも簡単な設定では、LeonG の回答の理由からアプリケーション設定を好みます。

于 2010-06-04T17:04:38.303 に答える