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

时间:2010-03-16 09:09:14

标签: c# wpf app-config

我正在尝试在我的WPF应用程序中更改一些配置文件用户设置值,但它只能部分工作。值正确更改,程序运行正常。我甚至可以重新启动程序,价值仍然是我改变它的那个。问题是,当我打开.exe.config文件时,该值仍然是旧值。我使用此代码更改值:

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

这个保存代码在哪里保存更改以及程序在运行此代码后读取值的方式/位置? 如果我运行程序的干净版本,则从.exe.config文件中正确获取ProjectNumber值,如果我更改配置文件中的值,则在运行程序时也会更改。但是,只要我运行上面的代码,程序就不会从配置文件中读取值。为什么呢?

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分: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();
}

答案 2 :(得分:0)

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

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

希望有所帮助