Когда и как мое приложение .NET использует свой файл App.Config? - PullRequest
10 голосов
/ 31 декабря 2011

Я никогда не думал об этом раньше; но недавно я узнал, как можно изменить файл app.config для добавления / удаления прослушивателей трассировки (например, чтобы перенаправить весь вывод Trace.WriteLine в текстовый файл).

Но я не совсем понимаю, как это работает? Может кто-нибудь объяснить немного?

Я знаю, что соответствующий код C # делает то же самое, что и конфигурация (в этом примере) - этот код генерируется / выполняется до точки входа моего приложения?

Ответы [ 3 ]

8 голосов
/ 31 декабря 2011

этот код генерируется / выполняется до точки входа моего приложения?

Думайте о файле конфигурации как о стандартном текстовом файле. Если код вашего приложения не читает и ничего с ним не делает, ничего не произойдет. Таким образом, в основном, когда вы определяете какой-то раздел в файле app.config, в вашем приложении есть некоторый код (либо в BCL, либо в пользовательском), который в какой-то момент будет считывать, анализировать и интерпретировать значения.

Итак, давайте рассмотрим пример слушателей трассировки. Когда вы пытаетесь что-то отследить в своем коде, базовый класс Trace будет использовать систему конфигурации для проверки значений, определенных вами в app.config. Эта конфигурирующая система анализирует XML только один раз и сохраняет его как одноэлементный в памяти, чтобы избежать издержек каждый раз. Таким образом, только в первый раз вы пытаетесь отследить что-то, что файл конфигурации анализируется, и при последующих вызовах значения напрямую считываются из памяти.

5 голосов
/ 31 декабря 2011

Файл 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>

Затем вы можете изменить то же самое, как показано ниже

, используя пространство имен

using System.Configuration;

Считайте ваш файл конфигурации как

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

и измените с помощью этого

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

Примите и проголосуйте, если найдете свой ответ

3 голосов
/ 31 декабря 2011

Как уже объяснили другие.Я просто хотел бы объяснить немного глубже, я надеюсь.

В .NET ваш CLR создает виртуальную границу для вашего приложения.Другими словами, когда ваше приложение размещается в CLR, оно создает виртуальное измерение для вашего приложения.Его называют AppDomain или Application Domain.Это этап, когда ваше приложение читает файл App.Config для любой информации.Потому что время от времени ваш App.Config будет сообщать CLR, какие сборки во время выполнения он должен искать, например: сборки CLR 2.0. Это обычно наблюдается, если ваши приложения сборки в VS2010 для 2.0 или сначала создают проект для 4, а затем переходят на цель 2.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...