App.config: пользователь и область действия приложения

Я добавил в свой проект файл App.config. Я создал две настройки из Project> Properties> Settings panel -

введите описание изображения здесь

Я заметил, что когда я добавляю параметр, я могу определить область действия как User или Application. -

  1. Пользователь
  2. Применение

Если я определяю параметр как User, он переходит в разделuserSettings,
если я определяю параметр как Application, он переходит в раздел applicationSettings

App.config

<configuration>

    <userSettings>
        <DemoApp.Properties.Settings>
            <setting name="MySetting1" serializeAs="String">
                <value>Value1</value>
            </setting>
        </DemoApp.Properties.Settings>
    </userSettings>

    <applicationSettings>
        <DemoApp.Properties.Settings>
            <setting name="MySetting2" serializeAs="String">
                <value>Value2</value>
            </setting>
        </DemoApp.Properties.Settings>
    </applicationSettings>

</configuration>

Но эти настройки доступны таким же образом из .cs -

Код

string mySetting1 = DemoApp.Properties.Settings.Default.MySetting1;
string mySetting2 = DemoApp.Properties.Settings.Default.MySetting2;

В чем разница между User и Application областью действия и при каких обстоятельствах следует выбирать между этими двумя?


person Parag Meshram    schedule 24.10.2012    source источник


Ответы (2)


Как правило, настройки приложения не могут быть изменены во время работы программы, а пользовательские настройки могут. Затем эти пользовательские настройки должны быть сохранены, чтобы пользователю было представлено знакомое впечатление при следующем запуске приложения.

Изменить: например, вы можете написать свое приложение с разными модулями и вам нужно убедиться, что ваш основной модуль использует правильную версию вашего модуля безопасности. Для этого вы должны настроить параметр области применения, например:

SecurityModuleVersion  string     Application      v1.21

Когда-нибудь позже, когда вы проведете рефакторинг модуля безопасности, вы можете изменить значение на v1.22 при развертывании, чтобы обеспечить правильную безопасность.

С другой стороны, если ваше приложение имеет разные «скины» с изменениями цвета, шрифта и т. Д., Вы можете настроить параметры пользователя примерно так:

ApplicationSkin        string     User              DefaultSkin

Затем, когда Мишель переходит на предпочтительный скин, приложение запоминает ее настройки. Теперь свойства могут выглядеть так:

ApplicationSkin        string     User              HelloKittySkin
person mcalex    schedule 24.10.2012
comment
не могли бы вы объяснить на примере? - person Parag Meshram; 12.11.2013
comment
Настройки по умолчанию находятся в файле конфигурации, да? Но где хранятся сохраненные пользовательские настройки? - person Kyle Delaney; 28.06.2017
comment
Настройки приложения сохраняются в файле * .exe.config. Пользовательские настройки сохраняются в c: \ users \ ‹userid› \ AppData \ Local \ ‹companyname› \ ‹appname› \ ‹version› \ user.config (где последние извлекаются из файла сборки). При загрузке пользовательские настройки имеют приоритет над настройками приложения. - person Schrodo_Baggins; 27.07.2017

Параметры области приложения доступны только для чтения и могут быть изменены только во время разработки или путем изменения файла .exe.config между сеансами приложения. Однако параметры пользовательской области могут быть записаны во время выполнения, как если бы вы изменили любое значение свойства. Новое значение сохраняется на протяжении всего сеанса приложения. Вы можете сохранить изменения пользовательских настроек между сеансами приложения, вызвав метод Settings.Save.

Источник на msdn: Использование настроек в C #

Пользовательские настройки обычно используются для сохранения пользовательских настроек (например, настроек уведомлений приложений и т. Д.). Настройки приложения обычно используются для таких элементов, как ключи API и т. Д.

Как отмечает @kmote, когда пользовательские настройки изменяются и сохраняются во время выполнения (через settings.Save()), они будут записаны в папку в хранилище профилей пользователей (обычно C: \ Users \ Username \ AppData \ Local \ AppName в Windows 7 и новее). Чтобы определить местоположение файла программным способом, см. этот пост.

person Cake or Death    schedule 24.10.2012
comment
любой живой пример будет очень признателен - person Parag Meshram; 12.11.2013
comment
Также следует отметить, что пользовательские настройки не могут быть изменены путем редактирования файла .config между сеансами. - person kmote; 31.08.2016
comment
@kmote Конечно можно! Если сеанс закрыт, вы можете изменить конфигурацию (и, следовательно, userSetting). Изменение сохраняется и отражается в программе, когда вы снова запускаете сеанс ... Я тестировал это только сейчас. - person Riegardt Steyn; 29.03.2017
comment
@Heliac: Я должен был быть более точным. Вы правы, что userSettings можно менять между сессиями. ОДНАКО, как только вы измените их программно (с помощью Settings.Save()), будет создан новый файл конфигурации, который будет скрыт / закопан в C: \ Users [имя пользователя] \ AppData \ Local \ Microsoft. С этого момента при каждом запуске приложения пользовательские настройки будут извлекаться исключительно из этого файла, и любые изменения, внесенные вручную в App.config или Settings.settings, будут игнорироваться. - person kmote; 29.03.2017
comment
Есть ли способ найти и просмотреть содержимое этого пользовательского файла конфигурации? - person Kyle Delaney; 28.06.2017
comment
См. stackoverflow.com/questions/1075204/ - person Cake or Death; 29.06.2017