使用此答案:https://stackoverflow.com/a/453230/3012708我以为我已成功实现了在C#应用程序中保存设置。
但是,保存似乎永远不会发生 - 应用程序配置文件永远不会更新,如果我添加一些要从SettingChangingEventHandler或SettingsSavingEventHandler调用的代码,它就永远不会被调用。
我添加了上面提到的答案所描述的设置。 "用户"中的4个bool值范围,访问修改器设置保留在"内部"。
在我的代码中,我致电:
Using MyApplication.Properties;
然后设置设置" Interval",我这样做:
Settings.Default.Interval = true;
并保存:
Settings.Default.Save();
如果我检查MyApplication.exe.config文件,我会看到设置在那里,如:
<userSettings>
<MyApplication.Properties.Settings>
<setting name="Interval" serializeAs="String">
<value>False</value>
</setting>
</MyApplication.Properties.Settings>
</userSettings>
然而,它仍然具有原始价值 - 错误。
有什么想法吗?
我试过没有&#34;使用...&#34;代码,并使用完整代码进行更新:
MyApplication.Properties.Settings.Default.Interval = true;
MyApplication.Properties.Settings.Default.Save();
我也尝试在Visual Studio之外以管理员身份运行应用程序 - 没有运气。
答案 0 :(得分:4)
您确定没有设置设置吗?注意:它们将设置在用户的配置文件下,而不是在解决方案文件夹中。通常在c:\Users\<username>\AppData\Local\<appname>
(AppData是隐藏文件夹)。
答案 1 :(得分:3)
MyApplication.exe.config是用于部署的文件。您正在正确保存设置,但exe.config文件包含原始值,因此您没有看到任何更改。
如果您想检查它是否正确保存,请写下
if(Properties.Settings.Default.Interval)
{
throw new Exception("Is True");
}
来自MSDN:
这些应用程序有两个配置文件:开发人员在开发过程中修改的源配置文件,以及随应用程序一起分发的输出文件。
在Visual Studio中进行开发时,将应用程序的源配置文件放在项目目录中,并将其“复制到输出目录”属性设置为“始终复制”或“如果更新则复制”。配置文件的名称是扩展名为.config的应用程序的名称。例如,名为myApp.exe的应用程序应该有一个名为myApp.exe.config的源配置文件。
Visual Studio会自动将源配置文件复制到放置已编译程序集的目录,以创建随应用程序部署的输出配置文件。在某些情况下,Visual Studio可能会修改输出配置文件;有关详细信息,请参阅重定向程序集版本文章的应用程序级别的重定向程序集版本。