Файл user.config не создается, но app.config есть?
В моей программе есть несколько настроек, в которых есть область действия пользователя. Однако при запуске программы создается только файл AppName.exe.config, в котором содержатся параметры.
При последующем сохранении параметра во время выполнения он создает файл user.config (который ранее не существовал) в папке AppData/Local/AppName/, но этот файл содержит только сохраненные настройки.
Почему это происходит? Почему он не создает user.config и не использует его при запуске, если он существует?
1 ответ
Из Архитектуры настроек приложения на MSDN:
Параметры области приложения могут храниться в файлах machine.config или app.exe.config. Machine.config всегда доступен только для чтения, а app.exe.config по соображениям безопасности ограничен только для чтения для большинства приложений.
Пользовательские настройки могут храниться в файлах app.exe.config, в этом случае они рассматриваются как статические значения по умолчанию.
Параметры по умолчанию в пользовательской области хранятся в новом файле user.config, где user - это имя пользователя, выполняющего приложение в данный момент. Вы можете указать значение по умолчанию для пользовательской настройки с помощью DefaultSettingValueAttribute. Поскольку пользовательские параметры часто меняются во время выполнения приложения, user.config всегда доступен для чтения / записи.
Сначала вы видите (как вы назвали) ваши "встроенные настройки", хранящиеся как (то, что Microsoft называет) "статические настройки по умолчанию", заданные пользователем, которые хранятся в app.exe (согласно пункту 2).
И затем, когда вы записываете свои настройки во время выполнения, они рассматриваются как "нестандартные" пользовательские настройки и записываются в user.config (согласно пункту 3), поэтому только тогда вы видите пользователя.config файл создан.
Короче говоря, нет необходимости в файле user.config для каждого пользователя, если параметры области действия пользователя одинаковы (по умолчанию) для всех.