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 и выше. ). Чтобы определить местоположение файла программным способом, см. Этот пост .


был бы очень признателен за любой живой пример
Параг Мешрам

1
Также следует отметить, что пользовательские настройки нельзя изменить, редактируя файл .config между сессиями.
kmote

@kmote Конечно можно! Если сеанс закрыт, вы можете изменить конфигурацию (и, следовательно, userSetting). Изменение сохраняется и отражается в программе, когда вы снова запускаете сеанс ... Я тестировал это только сейчас.
Riegardt Steyn

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

Есть ли способ найти и просмотреть содержимое этого пользовательского файла конфигурации?
Kyle Delaney
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.