Очень часто я вижу ответ на вопрос типа: «Как мне сохранить настройки в моем .NET-приложении?» заключается в том, чтобы отредактировать файл app.config, вручную добавив записи в app.config (или web.config) следующим образом:
<configuration>
<appSettings>
**<add key="ConfigValueName" value="ABC"/>**
</appSettings>
</configuration>
Затем доступ к ним, например:
string configValue = Configuration.AppSettings["ConfigValueName"];
Я буду называть подход, описанный выше, подходом "app.config". Очень редко я вижу, что люди рекомендуют добавить в проект файл «Настройки». Я видел это так много раз в Интернете и в stackoverflow ... Я начинаю задаваться вопросом, не упустил ли я что-то ... потому что я не уверен, почему вы использовали бы этот метод вместо использования "Настройки " файл. Я не входил в .NET до VS2005, поэтому одна теория, которая у меня есть, заключалась в том, как все было сделано в VS2003, и люди никогда не переключались?
Примеры людей, рекомендующих подход app.config:
- Простейший способ настройки файл в приложении Windows Forms C #
- Рекомендации: как хранить настройки в C # (формат / тип)?
С моей точки зрения, у подхода "файл настроек" есть следующие преимущества:
- Может использоваться как для настроек приложения (общих для всех пользователей), так и для пользовательских настроек в одном интерфейсе.
- Возможность использовать поддержку конструктора настроек в Visual Studio. Меньше ошибок при редактировании файла XML напрямую ИМХО.
- Рефакторинг - вы можете переименовать конкретное имя параметра, и оно автоматически обновит ссылки в вашем коде.
- Проверка типа компиляции.
- Поддержка автозаполнения.
- Возможности сетки свойств. Я обнаружил, что элемент управления PropertyGrid - это очень простой способ быстро создать форму параметров. Вы просто делаете
propertyGrid1.SelectedObject = Settings1.Default;
, и все готово.
Если вы не уверены, что я имею в виду под файловым подходом «Настройки», см. это post, который является одним из немногих примеров, когда кто-то рекомендует использовать файлы настроек вместо app.confg.
РЕДАКТИРОВАТЬ: Пожалуйста, поймите: цель этой темы - выяснить, почему люди будут использовать подход app.config, описанный выше, вместо подхода с использованием файла настроек. Я столкнулся с ограничениями подхода с использованием файла настроек, и время от времени мне приходилось откатывать собственное решение. Это совершенно другое обсуждение.