WPF:如何在运行时更改配置文件中的用户设置?

4

我正在尝试在我的WPF应用程序中更改一些配置文件用户设置值,但它只部分地起作用。该值被正确更改,并且程序在该值下运行良好。我甚至可以重新启动程序,该值仍然是我更改后的值。问题在于,当我打开.exe.config文件时,该值仍然是旧值。我使用以下代码更改该值:

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

这段代码的更改保存在哪里?运行代码后,程序如何/在哪读取该值?如果我运行程序的干净版本,则ProjectNumber值将从.exe.config文件中正确获取,并且如果我更改配置文件中的值,则运行程序时也会发生更改。但是,一旦我运行上面的代码,程序就不再从配置文件中读取该值。为什么呢?

3个回答

10

设置是以每个用户为基础保存的。您应该查看在 C:\Documents and Settings\[UserName]\... (WinXP) 或 C:\Users\... (Vista/7) 中的 Application Data 文件夹。

如果不保存任何设置,程序将使用默认配置,即您的 *.exe.config 文件。但是一旦您保存更改,就会创建一个特定于用户的设置文件,并在下次启动时加载此文件。我认为,这应该可以解释您的行为。


2

Properties.Settings仅涉及基于用户的设置,应用程序设置是完全不同的一组设置,如果您使用ClickOnce安装,则会被覆盖-因此请注意存储哪些配置文件。

 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();
}

0

用户保存的设置存储在用户的AppData目录下。通常是C:\Users\\AppData\Local\\

.exe.config文件中存储的值是默认值(您在VS中的设置编辑器中设置的值)

希望这有所帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接