Правильное использование app.config

В нескольких проектах C# я использовал файл app.config для передачи различных настроек в мою программу, таких как строки подключения, уровни мощности и т. д.

Однако иногда я сталкивался с ситуациями, когда настройки не обновлялись должным образом, и я пришел к выводу, что я не очень хорошо осведомлен о правильном использовании файла app.config.

Пример:

  • Замена файла .exe новой версией (с другими настройками) в выходной каталог без изменения exe.config приводит к тому, что программа видит жестко запрограммированные настройки, а не настройки существующего .exe.config.

Итак, мои вопросы:

  • Какова точная роль файла exe.manifest
  • Каждый раз, когда я создаю новый .exe, нужно ли мне вставлять в выходную папку что-либо еще, кроме файла .exe?
  • Какая разница в получении значения параметра: ConfigurationManager.'settingName'..., а не: Properties.Settings.Default.'settingName'?
  • Какова роль app.config build action?

Извините, если я прошу слишком много в одном вопросе.


person apomene    schedule 23.04.2014    source источник


Ответы (3)


Файл app.config — это файл, который обрабатывается особым образом при запуске связанного с ним приложения. Если исполняемый файл называется MyApp.exe, файл app.config должен называться MyApp.exe.config. Роль задачи сборки app.config состоит в том, чтобы скопировать файл с именем app.config в вашем проекте в MyApp.exe.config в выходном каталоге.

.NET предоставляет способы чтения содержимого файла (он в формате XML), и различные части .NET будут искать разные разделы в этом XML для обеспечения конфигурации.

Широко используемый раздел — это раздел настроек, который вы называете Properties.Settings.Default. Этот раздел работает вместе с Visual Studio, которая предоставляет редактор для настроек приложения. Доступ к настройкам осуществляется в коде с помощью сгенерированного класса. Добавление параметра добавит свойство в этот класс, и это свойство инициализируется значением в файле app.config.

В редакторе Visual Studio вы можете установить значение для параметра, и вы можете думать об этом как о значении по умолчанию для параметра. Однако, если вы перезапишете значение в файле app.config, последнее будет иметь приоритет. Это позволяет изменить файл app.config после установки и повторно запустить приложение с измененными параметрами.

Вы также можете получить доступ к настройкам приложения в файле app.config, используя другие методы, но, по моему мнению, лучше всего это сделать с помощью редактора Visual Studio и класса, сгенерированного кодом.

Я не уверен, что полностью понимаю проблему, с которой вы столкнулись. Если вы обновите MyApp.exe и оставите MyApp.exe.config нетронутым, вы не увидите изменений в настройках, используемых приложением (если, конечно, вы не переименовали или не изменили некоторые настройки).

Файл манифеста предоставляет информацию о параллельных сборках и может использоваться, помимо прочего, для запроса повышенных привилегий. Это не связано с файлом app.config.

person Martin Liversage    schedule 29.04.2014

Там довольно много ресурсов об этом.

См. http://msdn.microsoft.com/en-us/library/ms229689%28v=vs.90%29.aspx

и (лучший) обзор: http://msdn.microsoft.com/en-us/library/k4s6c3a0%28v=vs.110%29.aspx

app.config — очень мощный инструмент. Он решает многие проблемы, такие как управление версиями, миграция, обновление и т. д., но для этого требуется подробное чтение по приведенным выше ссылкам.

person Samuel    schedule 23.04.2014

Возможно, вы могли бы сделать одну вещь, если вы хотите копировать только файл .exe каждый раз, когда вы создаете свое приложение, это создать файл settings.ini или settings.txt, поместить свои параметры в этот файл (которые, конечно, не секрет) и прочитайте все ваши настройки оттуда, когда вы запускаете свое приложение. Вы можете поместить всю свою логику строки подключения в форму входа, если она у вас есть...

person Alex    schedule 23.04.2014