Що таке App.config в C # .NET? Як ним користуватися?


179

Я зробив проект у C # .NET, де мій файл бази даних - це робоча книга Excel. Оскільки розташування рядка з'єднання в моєму кодуванні важко зафіксовано, для встановлення його в моїй системі немає жодної проблеми, але для інших систем це існує.

Чи є спосіб спонукати користувача встановити шлях один раз після завершення налаштування програми?

Я отримав відповіді: "Використовувати App.Config" ... Хто-небудь може сказати, що це за App.config і як його тут використовувати в моєму контексті?


4
можливий дублікат Що таке app.config?
користувач

Відповіді:


190

Найпростіше, app.config - це файл XML з безліччю попередньо визначених розділів конфігурації та підтримкою користувацьких розділів конфігурації. "Конфігураційний розділ" - це фрагмент XML зі схемою, призначеною для зберігання певного типу інформації.

Параметри можна налаштувати за допомогою вбудованих розділів конфігурації, таких як connectionStringsабо appSettings. Ви можете додати власні розділи конфігурації; це розширена тема, але дуже потужна для створення сильно набраних файлів конфігурації.

У веб-програмах зазвичай є web.config, а у програмах Windows GUI / службі - файл app.config.

Конфігураційні файли рівня додатків успадковують налаштування з глобальних файлів конфігурації, наприклад, machine.config.

Читання з програми App.Config

Рядки підключення мають заздалегідь задану схему, яку ви можете використовувати. Зауважте, що цей маленький фрагмент - це дійсно дійсний файл app.config (або web.config):

<?xml version="1.0"?>
<configuration>
    <connectionStrings>   
        <add name="MyKey" 
             connectionString="Data Source=localhost;Initial Catalog=ABC;"
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

Визначивши свою програму app.config, ви можете прочитати її в коді за допомогою класу ConfigurationManager . Не залякуйте багатослівними прикладами MSDN; насправді це досить просто.

string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;

Написання в App.Config

Часто змінювати * .config файли, як правило, не є хорошою ідеєю, але це здається, що ви хочете виконати одноразове налаштування.

Див.: Змінити рядок з'єднання та перезавантажити app.config під час виконання, який описує, як оновити connectionStringsрозділ * .config під час виконання.

Зауважте, що в ідеалі ви б змінили конфігурацію у простому інсталяторі.

Розташування App.Config під час виконання

З : Припустимо, я вручну змінити деякі <value>в app.config, зберегти та закрити. Тепер, коли я переходжу до своєї папки бін і запускаю тут файл .exe, чому він не відображає застосовані зміни?

Відповідь : Коли ви складаєте програму, її app.config копіюється в каталог 1, з іменем, яке відповідає вашому файлу exe. Наприклад, якщо ваш exe був названий "test.exe", у вашому каталозі бін повинен бути "text.exe.config". Ви можете змінити конфігурацію без перекомпіляції, але вам потрібно буде відредагувати конфігураційний файл, створений під час компіляції, а не оригінальний app.config.

1: Зауважте, що файли web.config не переміщуються, а натомість залишаються в одному місці під час компіляції та розгортання. Один виняток із цього - коли трансформується web.config .

.NET Core

Були представлені нові параметри конфігурації з .NET Core. Спосіб роботи файлів * .config, схоже, не змінився, але розробники вільні вибирати нові, більш гнучкі парадигми конфігурації.


Дивіться також: codeproject.com/Articles/16466/…, щоб отримати чудовий огляд того, як працюють конфігураційні файли
BKSpurgeon

56

Просто, App.config - це XMLзаснований на файлі формат, який містить конфігурації рівня додатків .

Приклад:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="key" value="test" />
  </appSettings>
</configuration>

Ви можете отримати доступ до конфігурацій, використовуючи, ConfigurationManagerяк показано на фрагменті фрагмента коду нижче:

var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now "test"

Примітка: ConfigurationSettings застарілий метод отримання інформації про конфігурацію.

var value = System.Configuration.ConfigurationSettings.AppSettings["key"];

21
Вам потрібно посилатися System.Configuration.dll, щоб використовувати вищезгадані API.
KFL

2
Для одного ви не повинні зберігати рядки з'єднання в розділі AppSettings, вони переходять у розділ ConnectionStrings. Для двох, Visual Studio генерує ваші налаштування з сильним типом, якщо ви створюєте їх належним чином за допомогою дизайнера, вам ніколи не потрібно буде вводити ключове ім’я вручну (як, наприклад, у наведеному вище коді).
BrainSlugs83

1
Ми говоримо не про найкращі практики, а про рішення проблеми ОП.
Фуркан Сафдар

2
System.Configuration.ConfigurationManager.AppSettings["Key"]це вже рядок, виклик ToString()її є зайвим.
Bogdan Stăncescu

4

Просто додати щось, чого мені не вистачало з усіх відповідей - навіть якщо це здається дурним і очевидним, як тільки ти дізнаєшся:

Файл має бути названий "App.config" або "app.config" і може бути розміщений у вашому проекті на тому ж рівні, як, наприклад, Program.cs.

Я не знаю, чи можливі інші місця, інші назви (наприклад, application.conf, як це запропоновано в документації на ODP.net) не працювали для мене.

PS. Я почав з коду Visual Studio і створив новий проект з "dotnet new". У цьому випадку не створюється жоден файл конфігурації, я впевнений, що є й інші випадки. PPS. Вам може знадобитися додати пакунок-пакет, щоб мати змогу читати конфігураційний файл, у випадку .NET CORE було б "dotnet-додати пакет System.Configuration.ConfigurationManager --version 4.5.0"


це те, що я шукав. Потрібно знати, на якому рівні його включити. Деякі програми / рамки виглядають у папках на кшталт/resources
alex

3

App.Config - це файл XML, який використовується як файл конфігурації для вашої програми. Іншими словами, ви зберігаєте всередині нього будь-які параметри, які ви можете змінити, не потребуючи зміни коду (і перекомпіляції). Він часто використовується для зберігання рядків з'єднання.

Дивіться цю статтю MSDN про те, як це зробити.



0

Просто додамо ще один бал

Використовуючи app.config, яким чином ви можете керувати доступом до додатків, ви хочете застосувати певні зміни до всього конфігураційного файлу програми, і ви можете отримати доступ до таких налаштувань, як нижче ConfigurationSettings.AppSettings ["Key"]

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.