Winform应用程序在我们的Intranet中发布了ClickOnce.我们将个人喜好存储在隔离存储器中的GUI.所有的作品都很好:)
问题是当我们有一个新版本的应用程序,我们发布…所有的偏好都丢失了!用户需要设置每个版本的偏好.
有没有办法冻结整个应用程序的隔离,而不是版本?
解决方法
您需要使用应用程序作用域,而不是域范围的隔离存储.这可以通过使用IsolatedStorageFileStream的一个重载构造函数完成.
例:
using System.IO; using System.IO.IsolatedStorage; ... IsolatedStorageFile appScope = IsolatedStorageFile.GetUserStoreForApplication(); using(IsolatedStorageFileStream fs = new IsolatedStorageFileStream("data.dat",FileMode.OpenOrCreate,appScope)) { ...
但是,现在您将遇到此代码的问题,只有通过ClickOnce启动应用程序时才会工作,因为这是应用程序范围唯一可用的隔离存储空间.如果您不通过ClickOnce启动(例如通过Visual Studio),GetUserStoreForApplication()将抛出异常.
解决此问题的方法是在尝试使用应用程序作用域隔离存储之前确保AppDomain.CurrentDomain.ActivationContext不为空.