首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClickOnce和IsolatedStorage

ClickOnce和IsolatedStorage
EN

Stack Overflow用户
提问于 2008-10-14 17:08:08
回答 4查看 5.3K关注 0票数 10

Winform应用程序在我们内部网中随ClickOnce一起发布。我们将个人对GUI的偏好存储在独立存储中。一切都运行得很好:)

问题是,当我们有一个新版本的应用程序时,我们发布...所有首选项都将丢失!用户需要在每个版本上设置他们的首选项。

有没有办法冻结整个应用程序的隔离而不是版本?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-22 19:32:03

您需要使用应用程序范围的独立存储,而不是域范围的独立存储。这可以通过使用一个IsolatedStorageFileStream's重载构造函数来完成。

示例:

代码语言:javascript
复制
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不为空。

票数 19
EN

Stack Overflow用户

发布于 2008-10-14 17:25:44

不久前,我正在开发一个ClickOnce应用程序,并使用Environment.GetFolderPath(ApplicationData) --例如漫游应用程序数据文件夹--来存储所有设置。运行良好,并在多次更新中幸存下来。只需创建一个带有应用程序名称或CompanyName/AppName或其他名称的子目录,并将所有内容存储在其中。

票数 4
EN

Stack Overflow用户

发布于 2017-12-07 19:34:37

以下是其他答案的摘要:

代码语言:javascript
复制
IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForAssembly();//for visual studio
if (System.Deployment.Application.ApplicationDeployment.IsNetwor‌​kDeployed)
{
    isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();//for click once applications
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/202013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档