it-swarm.com.ru

В чем разница между файлом app.config и файлом XYZ.settings?

На самом деле я нахожусь в фазе изучения связанных с .NET вещей, и я изучал, как сохранить приложение. В итоге я написал свой собственный класс, который сохраняет настройки в файле XML, а затем обнаружил, что .NET сам поддерживает сохранение настроек приложения.

Но я нашел 2 способа сделать это. Когда я открываю диалог добавления нового элемента в Visual Studio 2008, он дает возможность создать файл настроек (.settings) или файл конфигурации (.config). В чем разница между обоими и в каком сценарии их следует использовать?

71
Hemant

ОБНОВЛЕНИЕ: В ASP.NET Core Land конфигурация больше не управляется с помощью одного из них - см. Эту фантастическую рецензию из Travis Illig с a-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 материал, обрисованный в общих чертах в этой статье , который является довольно гибким и предлагает другой угол управления настройками конфигурации.

54
Ruben Bartelink

Файл настроек - это файл ресурсов, в котором вы указываете различные настройки и их значение по умолчанию.

Сами значения настраиваются в файле конфигурации приложения (файл .config).

Файл настроек никогда не развертывается, поэтому для настройки вам понадобится файл конфигурации.

5
Gerrie Schenck

Файл app.config хранится в том же каталоге, что и приложение. Обычные пользователи не будут иметь прав на запись (например, в "Program Files").

Файл настроек должен храниться в пользовательском каталоге "AppData" (где у него есть права доступа).

Так что используйте файл настроек для пользовательских настроек.

0
laktak