C# · 12月 28, 2021

c# – ClickOnce和IsolatedStorage

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不为空.