ОБНОВЛЕНИЕ: В ASP.NET Core Land конфигурация больше не управляется с помощью одного из этих способов - посмотрите эту фантастическую рецензию от Трэвиса Иллига с z на Microsoft.Extension.Configuration
и Microsoft.Extensions.Configuration.Binder
, которые фактически являются надмножеством всех это
Настройки (как из набора .settings, так и Configuration.AppSettings
) хранятся в файле .config [вместе со многими другими вещами].
Разница в том, что .settings материал [который был добавлен в .NET 2.0 / VS2005] наслоил строго типизированный класс поверх набора настроек, которые принадлежат друг другу, тогда как Configuration.AppSettings
просто позволяет вам получать строки, заставляя вас делать какие-либо преобразования, и не имеет понятия по умолчанию. (Класс Configuration фактически был объединен в стороннюю сборку, чтобы отразить это - вам нужно явно добавить ссылку на System.Configuration, если вы этого хотите).
Добавление .settings в ваш проект приведет к добавлению app.config для хранения настроек, если у вас их еще нет. Класс, который читает настройки, генерируется автоматически каждый раз, когда вы меняете список настроек для вашего компонента / приложения.
Другими особенностями .Settings является возможность назначать некоторые настройки как пользовательские (а также сохранять пользовательские настройки одним вызовом).
Лучшая причина для использования .Settings, как правило, заключается в том, что вы получаете возможность четко определить, кто и какие настройки использует в базе кода, следуя использованию свойств (и каждый набор представляет собой отдельный блок в файле XML). Configuration.appSettings
более глобален по своей природе - это просто набор свойств, и вы не знаете, какая DLL, подсистема или класс зависит от конкретной записи настройки. См. этот пост от Стивена Смита , чтобы узнать больше.
Наконец, если вы все еще недостаточно читали об управлении настройками, вы не станете бить этот пост Рика Строля по теме за полноту или огромное количество идей и ракурсов.
В сторону: есть также Конфигурация ASP.NET vNext , , описанная в этой статье , которая довольно гибкая и предлагает другой угол управления настройками конфигурации.