WPF/C#: Où dois-je sauvegarder les préférences de l'utilisateur des fichiers?
Quel est l'emplacement recommandé pour enregistrer les préférences de l'utilisateur des fichiers? Est-il une méthode recommandée pour traiter les préférences de l'utilisateur?
Actuellement, je utiliser le chemin retourné à partir de typeof(MyLibrary).Assembly.Location
comme emplacement par défaut pour stocker les fichiers générés ou requis par l'application.
EDIT:
J'ai trouvé deux/questions intéressantes:
- Meilleur endroit pour enregistrer les informations utilisateur pour Windows XP et Vista applications
- Quelle est la façon de mettre en œuvre de sauvegarde /Chargement de la fonctionnalité?
EDIT #2:
C'est juste une remarque pour les gens comme moi qui n'avait jamais utilisé les réglages avant.
Les paramètres sont assez utiles, mais j'ai dû faire tout un tas de creuser pour comprendre ce qui se passait (en provenance du Python monde, n'est pas quelque chose que j'ai l'habitude aussi). Les choses se sont compliquées que je voulais sauver les dictionnaires et apparemment ils ne peuvent pas être sérialisé. Les paramètres semblent également stockés dans 3 fichiers différents en fonction de ce que vous faites. Il y a un app.config
, user.config
et un settings.setting
fichier. Voici donc deux liens que j'ai trouvé utile:
- http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ddeaca86-a093-4997-82c9-01bc0c630138
- http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/efe370dc-f933-4e55-adf7-3cd8063949b0/
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les Paramètres de l'Application assez facilement.
Si vous ne l'avez pas fait avant juste un clic droit sur le projet et choisissez Propriétés. Sélectionnez l'onglet Paramètres. Assurez-vous que vous avez choisi "User" dans le champ d'application (sinon, le paramètre est en lecture seule).
Le code pour accéder c'est simple:
Si vous avez besoin de l'enregistrer:
Dans l'exemple ci-dessus, la Largeur est la coutume nom du paramètre vous permet de définir les Paramètres de l'onglet et Application1 est l'espace de Noms de votre application.
Edit: Répondre à d'autres questions
Vous avez mentionné que vous vouliez magasin de Dictionnaire des objets dans les Paramètres. Comme vous l'avez découvert, vous ne pouvez pas le faire directement, parce que le Dictionnaire des objets ne sont pas sérialisables. Toutefois, vous pouvez créer votre propre serializable dictionnaire assez facilement. Paul Welzer avait un excellent exemple sur son blog.
Vous avez un couple de liens qui sorte de la boue un peu la situation. Votre question initiale est de savoir où enregistrer "de l'Utilisateur des Fichiers de Préférences". Je suis pratiquement certaine que Microsoft a l'intention avec les Paramètres de la fonctionnalité est exactement cela... de l'utilisateur de stockage de la peau les préférences, les choix de mise en page, etc. Il ne faut pas y voir un générique référentiel pour les données d'une application bien qu'il pourrait facilement être abusé de cette façon.
Les données sont stockées dans les différents lieux et pour une bonne raison. Certains paramètres sont les paramètres de l'Application et sont en lecture seule. Ce sont des paramètres dont l'application a besoin pour fonctionner, mais n'est pas spécifique à un utilisateur (par exemple, l'Uri pour les ressources de l'application ou peut-être un taux d'imposition). Celles-ci sont stockées dans l'application.config.
Les paramètres de l'utilisateur sont stockées dans une obfuscation répertoire de profondeur dans le Document Utilisateur/Paramètres du dossier. Les valeurs par défaut sont stockées dans l'application.config (je pense, pas de rappel pour certains sur le dessus de ma tête) mais toutes les modifications de l'utilisateur sont stockées dans leur dossier personnel. C'est destiné à des données que les changements d'utilisateur à utilisateur. (Par "utilisateur", je veux dire de l'utilisateur de Windows, pas de votre application utilisateur.)
Espère que cela clarifie un peu cela pour vous. Le système est en fait assez simple. Cela peut sembler un peu étranger au début, mais après quelques jours d'utilisation, vous n'aurez jamais à penser à nouveau... il fonctionne, tout simplement.
Lors de l'exécution de non-admin ou sur Vista, vous ne pouvez pas écrire dans le dossier "Program files" (ou tout sous-dossier de celui-ci).
Le bon emplacement pour stocker les préférences de l'utilisateur est (remplacer MyCompanyName et MyApplicationName avec les noms corrects, bien évidemment)
Sur le disque:
Ou dans le registre sous la clé:
Ces sont et par utilisateur, et ils travaillent avec d'utilisateur non-administrateur, plusieurs utilisateurs utilisent le même ordinateur, le changement rapide d'utilisateur, des services terminal server et tous les autres façons dont les gens peuvent interagir avec votre logiciel.
Si vous avez besoin d'un lieu commun pour tous les utilisateurs:
et les emplacements sont les suivants:
Ou dans le registre sous la clé:
Vous pouvez utiliser le stockage isolé. Vous pouvez isoler par l'utilisateur, de l'assemblage et/ou de domaine.
Introduction de Stockage Isolé
http://msdn.microsoft.com/en-us/library/3ak841sy(SV.80).aspx
Types d'Isolation
http://msdn.microsoft.com/en-us/library/eh5d60e1(SV.80).aspx
la suite semble être la meilleure option:
WinForms
seule réponse et le titre de la question en fait la demande,WPF
.