使用Properties.Settings保存应用程序设置不起作用?

时间:2015-12-14 18:49:01

标签: c# settings

使用此答案: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之外以管理员身份运行应用程序 - 没有运气。

2 个答案:

答案 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可能会修改输出配置文件;有关详细信息,请参阅重定向程序集版本文章的应用程序级别的重定向程序集版本。