В чем разница между файлом app.config и файлом XYZ.settings? - PullRequest
71 голосов
/ 26 мая 2009

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

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

Ответы [ 3 ]

54 голосов
/ 26 мая 2009

ОБНОВЛЕНИЕ: В 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 , , описанная в этой статье , которая довольно гибкая и предлагает другой угол управления настройками конфигурации.

5 голосов
/ 26 мая 2009

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

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

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

0 голосов
/ 01 сентября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...