App.config: Користувач проти сфери застосування


90

Я додав файл App.config у свій проект. Я створив два налаштування з Проект> Властивості> Панель налаштувань -

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

Я помітив, що коли я додаю налаштування, я можу визначити область дії як 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

може у plz пояснити на прикладі?
Параг Мешрам

1
Параметри за замовчуванням містяться у файлі конфігурації, так? Але де зберігаються збережені налаштування користувача?
Kyle Delaney

7
Налаштування програми зберігаються у файлі * .exe.config. Налаштування користувача зберігаються у папці c: \ users \ <userid> \ AppData \ Local \ <company> \ <appname> \ <version> \ user.config (де останні завантажуються з файлу збірки). При завантаженні користувацькі налаштування мають перевагу над налаштуваннями програми.
Schrodo_Baggins

71

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

Джерело на msdn: Використання налаштувань у C #

Налаштування користувача зазвичай використовуються для збереження уподобань користувачів (наприклад, налаштувань сповіщень додатків тощо). Налаштування програми, як правило, стосуються таких елементів, як ключі API тощо.

Як зазначає @kmote, коли налаштування користувача змінюються та зберігаються під час роботи (через settings.Save()), вони будуть записані в папку в сховищі профілю користувача (зазвичай C: \ Users \ Ім'я користувача \ AppData \ Local \ AppName у Windows 7 і вище ). Для програмного визначення місця розташування файлу див. Цю публікацію .


будь-який живий приклад буде дуже вдячний
Параг Мешрам,

1
Слід також зазначити, що налаштування користувача не можна змінювати, редагуючи файл .config між сесіями.
kmote

@kmote Звичайно можна! Якщо сеанс закритий, ви можете змінити конфігурацію (і, отже, userSetting). Зміна зберігається і відображається в програмі, коли ви знову починаєте сеанс ... Я протестував це зараз.
Riegardt Steyn

5
@Heliac: Я повинен був бути точнішим. Ви праві, що налаштування користувача можна змінювати між сесіями. Втім, після їх програмної зміни (за допомогою 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.