2011-12-31 10 views
10

私はこれまで考えなかったことがあります。私は最近、app.configファイルを変更してトレースリスナーを追加/削除する方法を学びました(たとえば、すべてのTrace.WriteLine出力をテキストファイルにリダイレクトするなど)。.NETアプリケーションでApp.Configファイルを使用する時期/方法

しかし、私はそれがどのように機能するのかよく分かりません。誰かが少し説明できますか?

私はconfig(この例では)と同じことをする対応するC#コードを知っています - そのコードは、アプリケーションのエントリポイントの前に生成/実行されますか?

+1

あなたはどのような面を理解していませんか?ファイルがロードされたら?トレースリスナーが追加されたら?正確には? – Oded

答えて

8

このコードは、アプリケーションのエントリポイントより前に生成/実行されますか?

標準のテキストファイルと同じ設定ファイルを考えてみましょう。アプリケーションコードがそれを読んで何もしない場合、何も起こりません。したがって、基本的にapp.configファイルにいくつかのセクションを定義すると、ある時点で値を解析して解釈するコードがアプリケーション(BCLまたはカスタムのいずれか)にあります。

したがって、トレースリスナーの例を考えてみましょう。あなたのコードで何かをトレースしようとすると、基になるTraceクラスはconfigシステムを使ってapp.configで定義した値をチェックします。この設定システムはXMLを一度だけ解析し、毎回オーバーヘッドを避けるためにシングルトンとしてメモリに格納します。ですから、configファイルが解析されたものをトレースしようとするのは初めてです。その後の呼び出しでは、値はメモリから直接読み込まれます。

5

app.configファイルは、起動するたびにアプリケーションによって表示されます。

app.configファイルに任意の設定を保存し、動的に追加または削除することができます。

ここに行く...

<appSettings> 
    <add key="HospitalName" value="HML Hospital" /> 
    <add key="HospitalAddress" value="Madurai" /> 
    <add key="ServerName" value="SMSERVER" /> 
    <add key="DatabaseName" value="HospiCare" /> 
    <add key="DBUserID" value="sa" />  
    <add key="Theme" value ="Blue"/> 
</appSettings> 

を次のように次にあなたが

string theme=ConfigurationManager.AppSettings("Theme"); 
として、あなたの設定ファイルを読み、名前空間に

using System.Configuration; 

を使用して同じを変更することができます

とmod既に他の人が説明したように、あなたのANSER

3

を見つけた場合、この

Configuration configFile = ConfigurationManager.OpenExeConfiguration(System.IO.Path.GetFileName(Application.ExecutablePath)); 
configFile.AppSettings.Settings(KeyName).Value = KeyValue; 
configFile.Save(); 

を受け入れ、アップ投票使ってIFY。私は少し深く私が望むことを説明したいと思う。

.NETでは、CLRによってアプリケーションの仮想境界が作成されます。言い換えると、アプリケーションがCLRでホストされると、アプリケーションが再生する仮想ディメンションが作成されます。それはAppDomainまたはApplication Domainと呼ばれます。 これは、アプリケーションが任意の情報のApp.Configファイルを読み取る段階です。時々あなたのApp.ConfigはCLRに何かのランタイムアセンブリを見い出す必要があるので、ex:CLR 2.0アセンブリを探す必要があります。これは、VS2010のビルドアプリケーションが2.0または最初に4用にプロジェクトを作成してから2.0ターゲットに変更する場合によく見られます。

関連する問題