web-dev-qa-db-ja.com

C#App.configと設定ファイル

これは些細な質問のように聞こえるかもしれませんが、私はWebをざっと見ましたが、私が見つけたのはapp.configは基本的に、アプリケーションのデータのアプリケーションキー/ペアを保存するための古いメカニズムです。

私が知りたいのは、(。NET開発者として)私たちがapp.config以上Settings file

-誰かが両方に長所と短所を提供して、適切に使用できるようにしてください。

再度、感謝します

20
IEnumerable

デスクトップアプリケーションのApp.configおよびWebアプリケーションのWeb.configは、.NET構成システムの一部です。主に、アプリケーションに関する.NETフレームワークの設定を制御するために使用されます。これらは、アセンブリのバージョンの置き換え(セクション<assemblyBinding>)、. NET Frameworkバージョンの置き換え(<startup>)などの構成設定です(app.configスキーマ全体については msdn を参照してください)。 1つのセクションは、アプリケーション開発者のカスタム設定(<appSettings>)専用です。カスタムセクションを作成する可能性もあります。したがって、設定を保存する必要がある場合は、app.configに便乗するか、独自の構成ファイルを作成できます。

App.configを使用する場合の長所と短所は次のとおりです。

  1. プロ:.NETには、appSettingsセクションから設定を読み取るための標準APIがすでにあります。いくつかの構成設定のみが必要な場合は、独自のクラスを開発してテストして構成ファイルを読み取るよりも、この準備が整ったAPIを使用する方がはるかに簡単です。また、app.configファイルはすでにVSプロジェクトに含まれています。

  2. Pro:machine.config/app.configの標準的な階層があります。マシン全体で設定でき、個別のアプリケーションに対して上書きまたはそのままにできるような設定を計画している場合は、app.configを使用する必要があります。

  3. Pro/Con:App.configは実行時にキャッシュされます。アプリケーションの実行中に更新が予想される場合は、構成ファイルの特定のセクションの更新を具体的に要求する必要があります。 web.configの場合、ファイルで何かが変更されると、Webアプリが自動的に再起動されます。これは非常に便利です。

  4. 欠点:app.configは.exeファイルと同じディレクトリに保存されます。通常は、C:\ Program Filesのサブフォルダーにあります。このディレクトリは、Windows 7では書き込みからさらに保護されています。そこに書き込むには、管理者グループのメンバーである必要があります。コントロールパネルのUAC(ユーザーアクセス制御)レベルが0(通常は設定されていません)に設定されていない場合、c:\への書き込みを確認するように求められます。プログラムファイル。したがって、管理者権限のないユーザーは、app.configの構成を変更できません。プログラムで設定を変更する場合も同様です。アプリケーションがWindows 7の管理者ユーザーの下で実行されていない場合、app.configを書き込もうとすると例外が発生します。通常、独自の構成ファイルはC:\ ProgramData \またはc:\ Usersサブフォルダーに移動します(Windows 7)。これらの場所は、ユーザーまたはプログラムによる記述に適しています。

  5. 欠点:ユーザーがapp.configファイルを編集して誤って破損した場合、アプリケーション全体が不明瞭なエラーメッセージで開始されません。別の構成ファイルが破損している場合は、より詳細なエラーメッセージを提供できます。

結論として、app.configは、より簡単な(より速い開発)アプローチを提供し、主に読み取り専用設定に適しています。カスタム設定ファイルを使用すると、ファイルの保存場所、検証/エラー処理、スキーマの柔軟性が向上しますが、開発中により多くの作業が必要になります。

28
farfareast

逆に言えば、設定ファイル(または最初に呼び出されたときのiniファイル)は、Windows 95より前のアプリケーション設定(キー/値のペア)を保持するために使用されていたメカニズムです。Windows95のリリースでは、アプリケーション設定をWindowsレジストリに移動しました(レジストリをめちゃくちゃにすると、Windowsが起動できなくなる可能性があるため、問題が発生しました)。

.configファイルは.Netと連動しました。 XML形式では、単純なキーと値のペアよりも動的で複雑な設定を構成できます。

最新のuser/settingsファイルは、.configファイルのXML拡張子です(特定の条件下で.configの特定の設定を上書きできる設定)。

2
Kevin