如何使exe在运行时在c#中读取修改的用户设置

How to make the exe read Modified User Settings at runtime in c#

我使用 visual studio 2010 创建了一个用户设置,如下

Client.exe.config

 <userSettings>
        <Client.Properties.Settings>
            <setting name="ParamValue" serializeAs="String">
                <value>OFF</value>
            </setting>
        </Client.Properties.Settings>
    </userSettings>

但是,如果我在运行时将值从 "OFF" 修改为 "ON",应用程序仍会访问旧值。但是,如果我关闭应用程序并再次打开,它会读取更新后的值。

有没有办法让exe在运行时读取更新的用户设置。

一种方法是在加载时将设置读入对象。根据需要使用该对象,并根据需要更新值。然后在关闭应用程序时将对象的值写回配置文件。

ApplicationSettingsBase class 有一个重新加载方法,您可以使用它从磁盘重新加载设置。

Properties.Settings.Default.Reload();
// Properties.Settings.Default.ParamValue will be reloaded from the file on disk.

您没有指定如何更改设置,但值得注意的是,如果您通过设置实例的 'Save' 方法更新 'User' 设置,Reload 将不再重置如果保存的值不同于默认值。这是因为 'User' 设置被写入用户配置文件文件夹中的设置文件,一旦它们被保存,您将必须更新该文件的版本,而不是您应用程序的 bin 文件夹中的版本。

具体来说,'User'通过Save方法保存回磁盘的设置被写入以下位置。

%USERPROFILE%\AppData\Local\<YourAppName>\<MangledName>\<Version>\user.config

如果您想将设置重置为您在 App.config 中定义的默认值,请使用 Reset 方法。

Properties.Settings.Default.Reset();
// Properties.Settings.Default.ParamValue will be reset to the default.