Bre*_*yan 16 .net c# clickonce
我一直用它ApplicationDeployment.CurrentDeployment.DataDirectory来存储客户端在运行时下载的内容,每次应用程序启动时都会出现这些内容,但是现在我发现如果应用程序更新,这些更改似乎是随机的.
在单击一次部署中为应用程序存储用户数据的最可靠方法是什么?
目前我一直在使用以下方法
private const string LocalPath = "data";
public string GetStoragePath() {
string dir;
if (ApplicationDeployment.IsNetworkDeployed) {
ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
dir = Path.Combine(ad.DataDirectory, LocalPath);
} else {
dir = LocalPath;
}
return CreateDirectory(dir);
}
Run Code Online (Sandbox Code Playgroud)
我最初遵循文章在ClickOnce应用程序中访问ClickOnce Data Directory本文是推荐路径的标题下的文章.
注意:CreateDirectory(string)如果目录尚不存在,只需创建一个目录.
我发现问题的根本原因是我创建了许多文件和索引文件,这个索引文件包含绝对路径,click-once会在升级时移动内容(或副本),因此绝对路径不再存在.我将调查隔离存储,因为Damokles建议查看这是否对单击一次部署具有相同的副作用.
Tri*_*dus 21
另一种选择是在用户的AppData文件夹中为您的应用程序创建一个目录并将其存储在那里.您可以通过以下方式获得相应的路径:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Run Code Online (Sandbox Code Playgroud)
你会发现很多应用程序使用它(它是本地的等价物).它也不会在ClickOnce版本之间移动.
查看IsolatedStorage这应该有所帮助.它甚至可以在部分信任环境中使用.
为了保证数据的存在,您需要使用应用程序范围的IsolatedStorage
using System.IO;
using System.IO.IsolatedStorage;
...
IsolatedStorageFile appScope = IsolatedStorageFile.GetUserStoreForApplication();
using(IsolatedStorageFileStream fs = new IsolatedStorageFileStream("data.dat", FileMode.OpenOrCreate, appScope))
{
...
Run Code Online (Sandbox Code Playgroud)
从这篇文章中获取的代码
| 归档时间: |
|
| 查看次数: |
7535 次 |
| 最近记录: |