96 votes

App.config : Champ d'application de l'utilisateur et de l'application

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

enter image description here

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

  1. Utilisateur
  2. Application

Si je définis le réglage comme User il va à userSettings section,
si je définis le paramètre comme Application il va à 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, 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 User y Application et dans quelles circonstances doit-on choisir entre les deux ?

80voto

mcalex Points 3142

Fondamentalement, les paramètres de l'application ne peuvent pas être modifiés pendant l'exécution d'un programme et les paramètres de l'utilisateur le peuvent. Ces derniers doivent ensuite être sauvegardés afin que l'utilisateur retrouve une expérience familière lors de l'exécution suivante de l'application.

Edit : Par exemple, vous pouvez écrire votre application avec différents modules, et vous devez vous assurer que votre module principal utilise la bonne version de votre module de sécurité. Pour cela, vous devez mettre en place un paramètre d'application-scope, par exemple :

SecurityModuleVersion  string     Application      v1.21

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

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

ApplicationSkin        string     User              DefaultSkin

Ensuite, lorsque Michelle change pour la peau qu'elle préfère, l'application se rappelle son paramètres. Les propriétés peuvent maintenant ressembler à ceci :

ApplicationSkin        string     User              HelloKittySkin

73voto

Cal279 Points 789

Les paramètres de l'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 deux sessions de l'application. Les paramètres de l'utilisateur, en revanche, peuvent être écrits au moment de l'exécution, comme vous le feriez pour modifier la valeur d'une propriété. La nouvelle valeur persiste pendant toute la durée de la session d'application. Vous pouvez faire persister les modifications apportées aux paramètres utilisateur entre deux 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 conserver les préférences de l'utilisateur (par exemple, les préférences de notification des applications, etc.) Les paramètres d'application sont généralement utilisés pour des éléments tels que les clés API, etc.

Comme l'a fait remarquer @kmote, lorsque les paramètres de l'utilisateur sont modifiés et persistés au moment de l'exécution (par l'intermédiaire de settings.Save() ), elles seront écrites dans un dossier du stockage des profils d'utilisateur (typiquement C:\Users\ Nom d'utilisateur : \AppData\Local\ Nom de l'application dans Windows 7 et plus). Afin de déterminer l'emplacement du fichier de manière programmatique, veuillez consulter ce poste .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X