web-dev-qa-db-fra.com

Où sont enregistrées les données de Properties.Settings.Default?

Dans mon application WPF, je clique sur Settings.settings dans l'explorateur de solutions et entre une variable StringCollection avec une étendue User:

alt text http://i45.tinypic.com/24xdmir.png

dans mon app.config je vois qu'ils sont sauvegardés là:

<userSettings>
    <TestSettings.Properties.Settings>
        <setting name="Paths" serializeAs="Xml">
            <value>
                <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                    <string>one</string>
                    <string>two</string>
                    <string>three</string>
                    <string>four</string>
                    <string>five</string>
                    <string>six</string>
                    <string>seven</string>
                </ArrayOfString>
            </value>
        </setting>
    </TestSettings.Properties.Settings>
</userSettings>

alors je lance mon application et avec ce code:

StringCollection paths = Properties.Settings.Default.Paths;

Properties.Settings.Default.Paths.Add("added in code");
Properties.Settings.Default.Save();

foreach (var path in paths)
{
    System.Console.WriteLine(path);
}

ce qui me donne ce output:

one
two
three
four
five
six
seven
added in code

Je lance l'application à nouveau et il me donne cette sortie:

one
two
three
four
five
six
seven
added in code
added in code

Mais je regarde à nouveau mon app.config et il a toujours les valeurs originales:

<userSettings>
    <TestSettings.Properties.Settings>
        <setting name="Paths" serializeAs="Xml">
            <value>
                <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                    <string>one</string>
                    <string>two</string>
                    <string>three</string>
                    <string>four</string>
                    <string>five</string>
                    <string>six</string>
                    <string>seven</string>
                </ArrayOfString>
            </value>
        </setting>
    </TestSettings.Properties.Settings>
</userSettings>

Où sont les valeurs ajoutées par l'application en cours de sauvegarde?

45
Edward Tanguay

Comme vous avez sélectionné le domaine d’utilisateur, ils sont enregistrés dans chaque répertoire de profil d’utilisateur, plus précisément dans le dossier AppData du profil d’utilisateur, dans un fichier nommé user.config.

Le chemin complet dépend de l'application.

Sous Windows 7 sans profil itinérant et avec une application Windows Forms nommée Example.Settings.CustomClass, je reçois le dossier suivant:

C:\Users\[user]\AppData\Local\Microsoft\Example.Settings.CustomCl_Url_3qoqzcgn1lbyw2zx3oz1o3rsw2anyjsn\1.0.0.0

Notez également qu'ils sont enregistrés en tenant compte de la version de votre application et que les valeurs stockées dans App.config sont les valeurs par défaut utilisées pour un nouvel utilisateur.

46
João Angelo

Je cherchais sous Win 10 pour les paramètres. Si quelqu'un d'autre a besoin de savoir, ils ne sont pas stockés dans le sous-dossier de Microsoft (voir la réponse précédente). Il suffit de regarder ici:

C:\Users\[user]\AppData\Local\Example\Example...\1.0.0.0\
0
Markus