C# 设置。设置在C中更新为默认值#

C# 设置。设置在C中更新为默认值#,c#,C#,我将设置文件保存在C#中,其中存储了配置参数。因此,我构建了解决方案并将其安装到系统中。应用程序将创建一个XML文件user.config,其中包含以下文件中的所有配置参数: %userprofile%\appdata\local或%userprofile%\local设置\ 我通过应用程序对配置进行了更改,并通过发出命令将其保存 Properties.Settings.Default.Save() 当我重新启动应用程序时,配置由默认值而不是更新的值组成 你知道我是否遗漏了什么吗 您的设置范围是

我将设置文件保存在C#中,其中存储了配置参数。因此,我构建了解决方案并将其安装到系统中。应用程序将创建一个XML文件user.config,其中包含以下文件中的所有配置参数:

%userprofile%\appdata\local或%userprofile%\local设置\

我通过应用程序对配置进行了更改,并通过发出命令将其保存

Properties.Settings.Default.Save()

当我重新启动应用程序时,配置由默认值而不是更新的值组成

你知道我是否遗漏了什么吗


您的设置范围是什么?不能从代码中更改应用程序范围的设置。 看看设置设计器。


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

设置的范围是什么?不能从代码中更改应用程序范围的设置。 看看设置设计器。

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

%userprofile%\appdata\local或%userprofile%\local设置\

这就是问题的根本错误所在,这不是user.config文件的存储位置。LocalFileSettingsProvider类(默认设置提供程序类)将user.config文件存储在一个具有无法说出的名称的目录中,如C:\Users\username\AppData\Local\WindowsFormsApplication1\WindowsFormsApplication1.\u Url\twchbbo4atpsvjpauzkkkvesu5b2h2aul\1.0.0.0

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

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

%userprofile%\appdata\local或%userprofile%\local设置\

这就是问题的根本错误所在,这不是user.config文件的存储位置。LocalFileSettingsProvider类(默认设置提供程序类)将user.config文件存储在一个具有无法说出的名称的目录中,如C:\Users\username\AppData\Local\WindowsFormsApplication1\WindowsFormsApplication1.\u Url\twchbbo4atpsvjpauzkkkvesu5b2h2aul\1.0.0.0

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


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

所谓“重新启动”,是指重新编译+重新运行吗?这是否会更改应用程序的版本号?是否要
从设置中获取更新的值?否,它不会重新编译。我从Program Files目录关闭并再次启动应用程序。您确定
Properties.Settings.Default.Save()行实际执行?@spajce,是的,我需要更新的值。它包括我将要使用的应用程序的所有配置参数。所谓“重新启动”,是指重新编译+重新运行吗?这是否会更改应用程序的版本号?是否要
从设置中获取更新的值?否,它不会重新编译。我从Program Files目录关闭并再次启动应用程序。您确定
Properties.Settings.Default.Save()行实际执行?@spajce,是的,我需要更新的值。它包括我将使用应用程序的所有配置参数。设置的范围是
user
设置的范围是
user