Расположение файла конфигурации может быть немного скользким. В зависимости от того, является ли он настройкой «пользователь» или «приложение», он перейдет в другой файл. Некоторые настройки могут даже исходить из вашего «машинного» конфига (как в случае с ASP.NET). Вместо того, чтобы гадать, где все, я нахожу гораздо более полезным спросить .NET, где он ищет эти файлы . Грубо:
//Machine Configuration Path
string path1 = ConfigurationManager.OpenMachineConfiguration().FilePath;
//Application Configuration Path
string path2 = ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None).FilePath;
//User Configuration Path
string path3 = ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
App.Config
Это то, что добавляется в ваш проект. Процесс сборки получит имя [myproject] .exe.config . Это содержит (в основном) настройки приложения, доступные только для чтения, и настройки уровня приложения для пользовательских настроек. Настройки уровня приложения сложно программно изменить их значения. Свойства настройки уровня приложения будут иметь только «get». Намерение таково: , если ваши настройки предназначены для всех пользователей приложения, их следует установить вручную (или установщиком). Если он изменяется для каждого пользователя, установите его для каждого пользователя.
Двоичные настройки по умолчанию
Ваше приложение будет работать без файла [myproject] .exe.config. Для этого бинарный файл имеет собственную версию файла «Хранимый». Это полезно в некоторых отношениях, но может сбить с толку. Если у вас есть файл .config в неправильном месте или с неправильным именем, .NET возвращается к «двоичным значениям по умолчанию». Это может привести к невозможности повлиять на настройки путем изменения файла конфигурации. Используйте метод, описанный выше, чтобы узнать, куда идет .config REALLY, или посмотрите на гнев бинарных настроек по умолчанию.
User.config
Это генерируется в первый раз, когда вы «сохраняете» свой объект Default.Settings с настройкой «для пользователя». Этот файл сохраняется в пути к профилю пользователя в месте, основанном на имени вашего проекта, версии, операционной системе и некоторых других темных .NET magics . Свойства этих настроек доступны для чтения / записи. Они предназначены для простой настройки, а затем сохраняются одним вызовом.
Потянув его вместе
Так, где мои настройки? Ответ в том, что потенциально многие файлы объединяются, чтобы получить «Активный набор» настроек. Настройки App.config и user.config являются основными блоками, но есть настройки machine.config, а также есть настройки сборки зависимостей, которые могут усложнить ситуацию ... но это совсем другая тема.
Истинная правда файлов конфигурации разбросана по множеству отвратительных случаев и подробностей . Однако, с небольшим знанием о том, как они объединяются, это довольно полезная система. Особенно, если вы понимаете, что вы можете привязать данные к этим настройкам;)