App.config: champ d'application utilisateur vs application

90

J'ai ajouté le fichier App.config dans mon projet. J'ai créé deux paramètres à partir de Projet> Propriétés> Panneau Paramètres -

entrez la description de l'image ici

J'ai remarqué que lorsque j'ajoute un paramètre, je peux définir la portée comme Userou Application. -

  1. Utilisateur
  2. Application

Si je définis le paramètre au fur et à mesure Userqu'il passe à la userSettingssection,
si je définis le paramètre au fur et à mesure Applicationqu'il passe à la applicationSettingssection

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>

Mais, ces paramètres sont accessibles de la même manière à partir de .cs-

Code

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

Quelle est la différence entre Useret Applicationportée et dans quelles circonstances faut-il choisir entre les deux?

Parag Meshram
la source

Réponses:

72

Fondamentalement, les paramètres d'application ne peuvent pas être modifiés pendant l'exécution d'un programme et les paramètres utilisateur le peuvent. Ces paramètres utilisateur doivent ensuite être enregistrés afin que l'utilisateur bénéficie d'une expérience familière lorsqu'il exécute ensuite l'application.

Modifier: pour des exemples, vous pouvez écrire votre application avec différents modules et vous devez vous assurer que votre module principal utilise la version correcte de votre module de sécurité. Pour cela, vous devez configurer un paramètre d'application, par exemple:

SecurityModuleVersion  string     Application      v1.21

Un peu plus tard, lorsque vous refactorisez le module de sécurité, vous pouvez modifier la valeur en v1.22 lorsque vous déployez pour vous assurer que la sécurité correcte est mise en œuvre

D'un autre côté, si votre application a des `` skins '' différents avec des changements de couleur, des changements de police, etc., vous pouvez configurer un paramètre utilisateur comme suit:

ApplicationSkin        string     User              DefaultSkin

Ensuite, lorsque Michelle change de peau qu'elle préfère, l'application se souvient de ses paramètres. Les propriétés peuvent maintenant ressembler à:

ApplicationSkin        string     User              HelloKittySkin
Mcalex
la source
pouvez-vous expliquer en utilisant un exemple?
Parag Meshram
1
Les paramètres par défaut sont dans le fichier de configuration, oui? Mais où sont stockés les paramètres utilisateur enregistrés?
Kyle Delaney
7
Les paramètres de l'application sont enregistrés dans le fichier * .exe.config. Les paramètres utilisateur sont enregistrés dans c: \ users \ <userid> \ AppData \ Local \ <companyname> \ <appname> \ <version> \ user.config (où les derniers sont extraits du fichier d'assemblage). Au chargement, les paramètres utilisateur ont priorité sur les paramètres de l'application.
Schrodo_Baggins
71

Les paramètres d'application sont en lecture seule et ne peuvent être modifiés qu'au moment de la conception ou en modifiant le fichier .exe.config entre les sessions d'application. Les paramètres de portée utilisateur, cependant, peuvent être écrits au moment de l'exécution, comme vous le feriez pour toute valeur de propriété. La nouvelle valeur persiste pendant la durée de la session d'application. Vous pouvez conserver les modifications apportées aux paramètres utilisateur entre les sessions d'application en appelant la méthode Settings.Save.

Source sur msdn: utilisation des paramètres en C #

Les paramètres utilisateur sont généralement utiles pour les préférences utilisateur persistantes (par exemple, les préférences de notification des applications, etc.). Les paramètres d'application concernent généralement des éléments tels que les clés API, etc.

Comme indiqué par @kmote, lorsque les paramètres utilisateur sont modifiés et conservés au moment de l'exécution (via settings.Save()), ils seront écrits dans un dossier dans le stockage du profil utilisateur (généralement C: \ Users \ Username \ AppData \ Local \ AppName dans Windows 7 et supérieur ). Afin de déterminer l'emplacement du fichier par programme, veuillez consulter cet article .

CalC
la source
tout exemple en direct serait très apprécié
Parag Meshram
1
Il convient également de souligner que les paramètres utilisateur ne peuvent pas être modifiés en éditant le fichier .config entre les sessions.
kmote
@kmote Bien sûr que vous pouvez! Si la session est fermée, vous pouvez modifier la configuration (et donc le userSetting). Le changement persiste et se reflète dans le programme lorsque vous relancez la session ... Je l'ai testé tout à l'heure.
Riegardt Steyn
5
@Heliac: J'aurais dû être plus précis. Vous avez raison de dire que les paramètres utilisateur peuvent être modifiés entre les sessions. TOUTEFOIS, une fois que vous les modifiez par programme (en utilisant Settings.Save()), un nouveau fichier de configuration est créé et est masqué / enterré dans C: \ Users [nom d'utilisateur] \ AppData \ Local \ Microsoft. À partir de ce moment, chaque fois que l'application est démarrée, les paramètres utilisateur seront exclusivement tirés de ce fichier et toutes les modifications apportées manuellement dans App.config ou Settings.settings seront ignorées.
kmote
Existe-t-il un moyen de rechercher et d'afficher le contenu de ce fichier de configuration utilisateur?
Kyle Delaney