繁体   English   中英

Settings.Settings更新为C#中的默认值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM