2011-12-31 10 views
10

Nigdy wcześniej o tym nie myślałem; ale ostatnio dowiedziałem się, jak zmodyfikować plik app.config, aby dodać/usunąć detektory śledzenia (na przykład, aby przekierować wszystkie dane wyjściowe Trace.WriteLine do pliku tekstowego).Kiedy/jak moja aplikacja .NET używa swojego pliku App.Config?

Ale nie do końca rozumiem, jak to działa? Czy ktoś może trochę wyjaśnić?

Znam odpowiadający kod C#, aby zrobić to samo, co config (w tym przykładzie) - czy ten kod jest generowany/wykonywany przed punktem wejścia mojej aplikacji?

+1

Jaki aspekt nie rozumiesz? Kiedy ładuje się plik? Kiedy dodawane są detektory śledzenia? Co dokładnie? – Oded

Odpowiedz

8

Czy ten kod jest generowany/wykonywany przed punktem wejścia mojej aplikacji?

Pomyśl o pliku konfiguracyjnym tak jak w standardowym pliku tekstowym. Jeśli twój kod aplikacji nie przeczyta i nie zrobi z nim nic, nic się nie stanie. Zasadniczo po zdefiniowaniu sekcji w pliku app.config, w aplikacji znajduje się kod (w BCL lub niestandardowym), który w pewnym momencie odczyta, przeanalizuje i zinterpretuje wartości.

Rozważmy zatem przykład słuchaczy śledzenia. Kiedy próbujesz prześledzić coś w swoim kodzie, podstawowa klasa Trace użyje systemu konfiguracji, aby sprawdzić wartości zdefiniowane w pliku app.config. Ten system konfiguracyjny analizuje kod XML tylko jeden raz i przechowuje go w pamięci pojedynczej, aby uniknąć narzutu za każdym razem. Tak więc, to tylko za pierwszym razem, gdy próbujesz prześledzić coś, co jest analizowane w pliku konfiguracyjnym, a podczas kolejnych wywołań wartości są bezpośrednio odczytywane z pamięci.

5

Aplikacja app.config jest sprawdzana przez aplikację przy każdym uruchomieniu.

Możesz przechowywać dowolne ustawienia w plikach app.config, dodawać lub usuwać dynamicznie.

Proszę bardzo ...

<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> 

Następnie można zmieniać tak samo jak następuje

używając nazw

using System.Configuration; 

Czytaj plik konfiguracyjny jako

string theme=ConfigurationManager.AppSettings("Theme"); 

i mod IFY za pomocą tego

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

Akceptuj i głosować w górę, jeśli znajdziesz swoją anser

3

Jak już inni wyjaśnione. Chciałbym wyjaśnić nieco głębiej, mam nadzieję.

W .NET Twój CLR tworzy wirtualną granicę dla twojej aplikacji. Innymi słowy, gdy aplikacja jest hostowana w środowisku CLR, tworzy wirtualny wymiar, aby aplikacja mogła się bawić. Nazywa się AppDomain lub Application Domain. To jest etap, w którym aplikacja odczytuje plik App.Config w celu uzyskania dowolnych informacji. Ponieważ czasami App.Config poinformuje CLR, jakie zestawy uruchomieniowe powinien wyglądać dla złożeń ex: CLR 2.0 Jest to zwykle widoczne, jeśli twoja aplikacja do budowania w VS2010 dla wersji 2.0 lub najpierw utworzy projekt dla 4, a następnie zmieni się na cel 2.0.

Powiązane problemy