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

91

Я добавил в свой проект файл 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объемом и при каких обстоятельствах следует выбирать между этими двумя?

Параг Мешрам
источник

Ответы:

72

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

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

SecurityModuleVersion  string     Application      v1.21

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

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

ApplicationSkin        string     User              DefaultSkin

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

ApplicationSkin        string     User              HelloKittySkin
Макалекс
источник
не могли бы вы объяснить на примере?
Parag Meshram
1
Настройки по умолчанию находятся в файле конфигурации, да? Но где хранятся сохраненные пользовательские настройки?
Kyle Delaney
8
Настройки приложения сохраняются в файле * .exe.config. Пользовательские настройки сохраняются в c: \ users \ <userid> \ AppData \ Local \ <companyname> \ <appname> \ <version> \ user.config (где последние извлекаются из файла сборки). При загрузке пользовательские настройки имеют приоритет над настройками приложения.
Schrodo_Baggins
71

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

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

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

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

CalC
источник
был бы очень признателен за любой живой пример
Параг Мешрам
1
Также следует отметить, что пользовательские настройки нельзя изменить, редактируя файл .config между сессиями.
kmote
@kmote Конечно можно! Если сеанс закрыт, вы можете изменить конфигурацию (и, следовательно, userSetting). Изменение сохраняется и отражается в программе, когда вы снова запускаете сеанс ... Я тестировал это только сейчас.
Riegardt Steyn
5
@Heliac: Я должен был быть более точным. Вы правы, что userSettings можно менять между сессиями. ОДНАКО, как только вы измените их программно (с помощью Settings.Save()), будет создан новый файл конфигурации, который будет скрыт / закопан в C: \ Users [имя пользователя] \ AppData \ Local \ Microsoft. С этого момента при каждом запуске приложения пользовательские настройки будут извлекаться исключительно из этого файла, и любые изменения, внесенные вручную в App.config или Settings.settings, будут игнорироваться.
kmote
Есть ли способ найти и просмотреть содержимое этого пользовательского файла конфигурации?
Kyle Delaney