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

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

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

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

Ответ 1

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

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

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

Ответ 2

Прикладная программа 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();

Принять и проголосовать, если вы найдете ваш anser

Ответ 3

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

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