我刚刚将我的WPF应用程序从.NET 4升级到.NET 4.5.2。一切(到目前为止)似乎过渡得很好,只有一个例外。
我有一个设置文件,一旦我从旧版本的应用程序(运行.NET 4)升级到新版本(运行.NET 4.5.2),就拒绝保存更改。我无法弄清楚是什么导致它破裂。我相信更多细节会有所帮助,但我甚至不确定这里要包含哪些内容才能提供帮助。
任何帮助都将不胜感激。
编辑:通过“就地”升级,我的意思是自动升级,我启动旧应用程序,它与服务器通信并在启动时升级应用程序。
我刚刚意识到,如果我在“就地”升级后关闭应用程序,并重新启动它,那么用户设置继续正常工作。这只是升级后的第一次运行,他们无法保存/更改。
答案 0 :(得分:0)
我没有找到发生这种情况的原因,只是它发生了。由于我发现它在升级后第一次运行时才破坏了设置,因此我决定在应用程序升级时强制重启。
我只找到一种方法来重启正常工作的clickonce应用程序。请参阅How do I restart a WPF application?。
要检查是否发生升级,在我的App.xaml.cs中检查IsNetworkDeployed,以确保CurrentDeployment不为null,然后检查一旦有人登录到应用程序时设置的用户设置。用户设置检查确保全新安装(与升级相反)不会触发重启。
private bool ApplicationUpdated()
{
return ApplicationDeployment.IsNetworkDeployed && ApplicationDeployment.CurrentDeployment.IsFirstRun && userSettingsService.LastOnline != default(DateTime);
}