我有一个Win Form应用程序,可以在UserSettings.Settings文件中存储一些用户设置。到目前为止,这一点运行良好,但是当我发布更新时,似乎设置文件被“重置”。我通过ClickOnce
完成的。
这是预期的行为吗? 我可以控制设置文件中的字段是否被覆盖? 我应该更好地存储用户设置吗?
由于
答案 0 :(得分:4)
当您发布更新时,您更新的应用应该调用ApplicationSettingsBase.Upgrade Method 来移动以前版本的值。这是一个类似的问题:Automatically "upgrade" user settings from previous version of app.config file?
请记住,您应该只调用上述方法一次,因此您可能必须存储您是否已经在设置中调用了升级,并执行以下操作:
if(!Settings.Default.Upgraded)
{
Settings.Default.Upgrade();
Settings.Default.Upgraded = true;
Settings.Default.Save();
}
另一种可能的解决方案是将设置存储在不依赖于应用程序版本的文件夹中。在这种情况下,您不会丢失值,也不需要在版本之间升级设置。
答案 1 :(得分:2)
你在哪里保存.Settings文件?它可能不应包含在您的可执行文件的安装目录中。尝试将其移动到用户的应用程序数据目录:
http://blog.kowalczyk.info/article/Getting-user-specific-application-data-directory.html
祝你好运!答案 2 :(得分:1)
您是否只是使用ClickOnce内置的Application Settings?
如果是这样,那么您只需在设置编辑器中将范围设置为用户并设置will be merged on upgrades as described here
正如ClickOnce应用程序的每个版本都与所有版本隔离一样 其他版本,ClickOnce应用程序的应用程序设置 也与其他版本的设置隔离。当你的 用户升级到应用程序的更高版本的应用程序 设置会比较最近(编号最高)版本的设置 对照随更新版本提供的设置并合并 将设置设置为一组新的设置文件。
答案 3 :(得分:0)
在Windows Vista / 7下 它被保存到:
C:\Users\USERNAME\AppData\Local\MANUFACTURER_NAME\
和
C:\Users\USERNAME\AppData\Roaming\MANUFACTURER_NAME\
我非常确定它也会在xp下保存到应用程序数据中。
您的设置会继续重置,因为新版本使用其他文件夹。检查一下。