web-dev-qa-db-fra.com

App.config: Portée de l'utilisateur et de l'application

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

enter image description here

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

  1. Utilisateur
  2. Application

Si je définis le paramètre comme User, il passe à la section userSettings,
si je définis un paramètre comme Application, il passe à applicationSettings section

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 vous pouvez accéder à ces paramètres 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 User et Application et quelles sont les circonstances dans lesquelles on devrait choisir entre ces deux?

83
Parag Meshram

En gros, les paramètres de l'application ne peuvent pas être modifiés pendant l'exécution d'un programme, contrairement aux paramètres de l'utilisateur. Ces paramètres utilisateur doivent ensuite être enregistrés pour que l'utilisateur se familiarise avec la prochaine utilisation de l'application.

Édition: vous pouvez par exemple écrire votre application avec différents modules et 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

Quelque temps plus tard, lorsque vous restructurez le module de sécurité, vous peut changer la valeur en v1.22 lors du déploiement pour vous assurer que la sécurité correcte est mise en œuvre.

D'autre part, si votre application a des "skins" différents avec des modifications de couleur, de police, etc., vous pouvez configurer un paramètre utilisateur comme suit:

ApplicationSkin        string     User              DefaultSkin

Ensuite, lorsque Michelle modifie son skin, l’application se souvient des elle paramètres. Les propriétés peuvent maintenant ressembler à:

ApplicationSkin        string     User              HelloKittySkin
64
mcalex

Les paramètres de portée 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 d'étendue utilisateur, cependant, peuvent être écrits au moment de l'exécution, exactement comme si vous changiez une 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: tilisation 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 s'appliquent généralement à des éléments tels que les clés d'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 sont écrits dans un dossier du stockage du profil utilisateur (généralement C:\Utilisateurs\ Nom d'utilisateur \AppData\Local\ NomApp sous Windows 7 et versions ultérieures). Afin de déterminer l’emplacement du fichier par programmation, veuillez vous reporter à this post .

70
CalC