Winform应用程序在我们内部网中随ClickOnce一起发布。我们将个人对GUI的偏好存储在独立存储中。一切都运行得很好:)
问题是,当我们有一个新版本的应用程序时,我们发布...所有首选项都将丢失!用户需要在每个版本上设置他们的首选项。
有没有办法冻结整个应用程序的隔离而不是版本?
发布于 2008-10-22 19:32:03
您需要使用应用程序范围的独立存储,而不是域范围的独立存储。这可以通过使用一个IsolatedStorageFileStream's重载构造函数来完成。
示例:
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不为空。
发布于 2008-10-14 17:25:44
不久前,我正在开发一个ClickOnce应用程序,并使用Environment.GetFolderPath(ApplicationData) --例如漫游应用程序数据文件夹--来存储所有设置。运行良好,并在多次更新中幸存下来。只需创建一个带有应用程序名称或CompanyName/AppName或其他名称的子目录,并将所有内容存储在其中。
发布于 2017-12-07 19:34:37
以下是其他答案的摘要:
IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForAssembly();//for visual studio
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();//for click once applications
}https://stackoverflow.com/questions/202013
复制相似问题