2010-03-16 7 views
3

J'essaie de changer certaines valeurs de paramètres utilisateur de fichier de configuration dans mon application WPF, mais cela ne fonctionne qu'en partie. La valeur est modifiée correctement et le programme s'exécute correctement avec la valeur. Je peux même redémarrer le programme et la valeur est toujours celle à laquelle je l'ai changé. Le problème est que lorsque j'ouvre le fichier .exe.config, la valeur est toujours l'ancienne valeur. Im en utilisant ce code pour modifier la valeur:WPF: Modification des paramètres utilisateur du fichier de configuration lors de l'exécution?

Properties.Settings.Default.ProjectNumber = varTestExample; 
Properties.Settings.Default.Save(); 

Où ce enregistrer le code Enregistrer les modifications et comment/où est le programme lu la valeur après avoir exécuter ce code? Si j'exécute une version propre du programme, la valeur ProjectNumber est correctement extraite du fichier .exe.config et si je change la valeur dans le fichier de configuration, elle change également lorsque j'exécute le programme. Mais dès que je cours le code ci-dessus le programme ne lit pas la valeur du fichier de configuration. Pourquoi?

Répondre

8

Les paramètres sont enregistrés par utilisateur. Vous devriez regarder dans le dossier Application Data dans C:\Documents and Settings\[UserName]\... (WinXP) ou dans C:\Users\... (Vista/7).

Sans enregistrer les paramètres, le programme utilise la configuration par défaut qui est votre fichier *.exe.config. Mais dès que vous enregistrez les modifications, un fichier de paramètres spécifique à l'utilisateur est créé et il charge ce fichier au prochain démarrage. Je pense que cela devrait expliquer votre comportement.

+0

C'est parfait. – ChrisF

0

Les paramètres enregistrés par l'utilisateur sont stockés dans le répertoire AppData de l'utilisateur. Habituellement C: \ Users \\ AppData \ Local \\

Les valeurs stockées dans le fichier .exe.config sont les valeurs par défaut (que vous avez défini dans l'éditeur de paramètres dans VS)

Hope it helps

2

Les Propriétés.Paramètres se réfèrent uniquement au paramètre basé sur l'utilisateur, les Paramètres de l'application sont un ensemble de paramètres complètement distincts, qui seront remplacés si vous utilisez les Installations ClickOnce - soyez donc attentif aux configurations que vous y stockez.

private void updateDataInConfigFile() 
    { 
     Xml xmlConfigFile = new Xml(ProjectName.sSettingFileName); 
     xmlConfigFile.SetValue("My Setting Section", "MyFirstSetting", MySettingValue); 
} 
    private void GetDataFromConfigFile() 
    { 
     Xml xmlConfigFile = new Xml(MyProject.sSettingFileName); 

     txtAccessDriverId.Text = xmlConfigFile.GetValue("Mys Setting Section", "MyFirstSetting").ToString(); 
}