[英]Settings.Settings is updated to default values in C#
我在C#中有设置文件,在其中存储配置参数。 因此,我构建了解决方案并将其安装在系统中。 该应用程序创建一个XML文件user.config,该文件由以下内容中的所有配置参数组成:
%userprofile%\\appdata\\local or %userprofile%\\Local Settings\\
我通过应用程序对配置进行了更改,并通过发出命令将其保存
Properties.Settings.Default.Save();
当我重新启动应用程序时,配置由默认值而不是更新值组成。
如果我在这里缺少任何东西的任何想法。
%userprofile%\\ appdata \\ local或%userprofile%\\ Local Settings \\
这是该问题的根本错误,这不是user.config文件的存储位置。 LocalFileSettingsProvider类(默认设置提供程序类)将user.config文件存储在目录中,该目录的名称难以置信,如C:\\ Users \\ username \\ AppData \\ Local \\ WindowsFormsApplication1 \\ WindowsFormsApplication1._Url_twchbbo4atpsvjpauzkgkvesu5bhh2aul \\ 1.0.0.0
名称的twchbbo4atpsvjpauzkgkvesu5bh2aul
部分是由哈希函数生成的,该哈希函数结合了程序安装位置,程序名称,[AssemblyCompany]和[AssemblyProduct],以确保该目录是唯一的,并且不会与另一个程序的user.config冲突。 并附加[AssemblyVersion],以便程序的不同版本不会冲突。
您需要通过首先找到正确的user.config文件来诊断此问题。 从%appdata%\\ Local或%appdata%\\ Roaming目录开始。 确保Save()方法确实保存,如果没有为设置分配其他值,则不会保存。 使用SysInternals的ProcMon实用工具仔细检查所有假设,您将在跟踪中看到程序正在访问文件。
您的设置范围是什么? 您无法通过代码更改像这样的Application Scoped设置。 看一下设置设计器。
您可以在此处阅读有关设置范围的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.