60 votes

Quelle est la meilleure façon de stocker les paramètres de l'utilisateur pour une .NET application?

J'ai un .NET 2.0 application Windows Forms. Où est le meilleur endroit de la stocker les paramètres utilisateur (compte tenu de Windows lignes directrices)?

Certaines personnes souligné Application.LocalUserAppDataPath. Cependant, ce qui crée une structure de dossiers comme:

C:\Documents and Settings\user_name\Local Settings\Application Data\company_name\product_name\product_version\

Si j'ai la version de la version 1 de mon application et de stocker un fichier XML là, puis relâchez la version 2, qui permettrait de passer à un autre dossier, droit? Je préfère avoir un seul dossier, par utilisateur, pour stocker des paramètres, indépendamment de la version de l'application.

82voto

Ryan Farley Points 7916

J'aime l'aide de l' Application Paramètres. Ensuite, vous avez construit dans le soutien à l'aide des paramètres de concepteur si vous voulez au moment de la conception ou à l'exécution d'utilisation:

// read setting
string setting1 = (string)Settings.Default["MySetting1"];
// save setting
Settings.Default["MySetting2"] = "My Setting Value";

Il ne stocker les paramètres dans une même structure de dossier que vous décrivez (avec la version dans le chemin d'accès). Cependant, avec un simple appel à:

Properties.Settings.Default.Upgrade(); 

L'application va tirer toutes les versions précédentes des paramètres à enregistrer dans.

8voto

Jonathan Wood Points 26443

.NET applications dans les paramètres de mécanisme qui est facile à utiliser. Le problème avec cela, à mon avis, est qu'il stocke les paramètres de dans une obscure répertoire et à la fin les utilisateurs ne seront pas en mesure de le trouver. De plus, la commutation de débogage pour la libération de construire des modifications de l'emplacement de ce répertoire, ce qui signifie que tous les paramètres enregistrés dans une configuration sont perdus dans l'autre.

Pour ces raisons et d'autres, je suis venu avec mes propres paramètres de code pour Windows Forms. Ce n'est pas tout à fait aussi lisse que celui qui vient avec .NET, mais c'est plus souple, et je l'utilise tout le temps.

5voto

Lars Truijens Points 24005

Ou écrire vos paramètres dans un fichier xml et l'enregistrer en utilisant le Stockage Isolé. Selon le magasin que vous utilisez, il l'enregistre dans le dossier de Données d'Application. Vous pouvez également choisir d'itinérance activée magasin qui signifie que lorsque l'utilisateur ouvre une session sur un autre ordinateur, les paramètres de mouvement.

2voto

Jason Z Points 5135

Une méthode qui a fonctionné pour moi dans le passé a été de créer un des paramètres de la classe et de l'utilisation de la sérialisation XML pour écrire dans le fichier système. Vous pouvez étendre ce concept en créant une collection d'objets de paramètres et de sérialisation. Vous avez toutes vos paramètres pour tous les utilisateurs dans un seul endroit sans avoir à vous soucier de la gestion du système de fichiers.

Avant que quelqu'un me donne tout flak partiellement ré-inventer la roue, permettez-moi de dire quelques choses. Pour l'un, il est à seulement quelques lignes de code pour sérialiser et écrire le fichier. Deuxièmement, si vous avez un objet qui contient vos paramètres, vous n'avez pas à faire de multiples appels à la appSettings objet lorsque vous chargez votre application. Et enfin, il est très facile d'ajouter des éléments qui représentent vos applications d'état, vous permettant ainsi de reprendre un travail de longue haleine lors du chargement de l'application prochaine.

0voto

LeoD Points 655

Les réglages sont standard paires clé-valeur (string chaîne). Je pourrais les envelopper dans un fichier XML, si cela aide.

Je préfère utiliser le système de fichiers au lieu de la base de registre. Il semble être plus facile à maintenir. Dans les scénarios de prise en charge, si l'utilisateur doit ouvrir manuellement/modifier les paramètres, ce serait plus facile si c'est dans le système de fichiers.

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