0

I have the settings file in C# where I store the configuration parameters. So, I build the solution and install it in the system. The application creates an XML file user.config consisting of all the configuration parameters in :

%userprofile%\appdata\local or %userprofile%\Local Settings\

I made changes to the configuration through the application and save it by issuing the command

Properties.Settings.Default.Save();

When I restart the application, the configuration consists of the default values and not the updated values.

Any idea if I am missing something here.

enter image description here

4

2 回答 2

2

%userprofile%\appdata\local 或 %userprofile%\Local Settings\

这是这个问题的根本错误,这不是 user.config 文件的存储位置。LocalFileSettingsProvider 类(默认设置提供程序类)将 user.config 文件存储在一个名称难以描述的目录中,例如 C:\Users\username\AppData\Local\WindowsFormsApplication1\WindowsFormsApplication1._Url_twchbbo4atpsvjpauzkgkvesu5bh2aul\1.0.0.0

名称的twchbbo4atpsvjpauzkgkvesu5bh2aul一部分是由一个哈希函数产生的,它结合了程序安装位置、程序名称、[AssemblyCompany]和[AssemblyProduct],以确保目录是唯一的,并且不会与另一个程序的user.config冲突。并附加 [AssemblyVersion] 以便不同版本的程序不会发生冲突。

您需要首先找到正确的 user.config 文件来诊断此问题。从 %appdata%\Local 或 %appdata%\Roaming 目录开始。确保 Save() 方法实际保存,如果没有为设置分配不同的值,则不会。使用 SysInternals 的 ProcMon 实用程序仔细检查所有假设,您将看到您的程序在跟踪中访问该文件。

于 2013-01-14T13:31:48.243 回答
1

您的设置范围是什么?您不能像从代码中那样更改应用程序范围设置。看看设置设计器。 在此处输入图像描述

您可以在此处阅读有关设置范围的更多信息。

于 2013-01-14T12:10:57.537 回答