1

我在我的 C# .net 应用程序中使用了 IsolatedStorage 技术。

我的应用程序在关闭时将数据保存在隔离存储中名为 MyData.dat 的文件中。

当我打开我的应用程序时,它会重新加载该数据并将其打印在屏幕上。

当我将我的应用程序移动到另一个目录时,例如从 D:\MyApp.exe 到 D:\Apps\MyApp.exe,然后从它的新目录运行应用程序,加载文件 MyData.dat (FileNotFoundException) 失败,因为它在不同的地方寻找不同的 MyData.dat 文件..

有人知道我如何将我的隔离文件 - MyData.dat 文件保存在一个地方,无论我从哪里打开我的 App.exe,它都会找到它?

4

4 回答 4

1

检查在这两种情况下检索的IsolatedStorage的目录。即使机器相同,不同位置的相同应用程序的预期 存储路径也可能不同。

获取隔离存储路径

于 2012-03-13T19:47:38.160 回答
0

可以 IsolatedStorageFile.GetUserStoreForAssembly用来获取可以使用的商店,只要组件标识不变。所以它也将独立于 exe 文件的位置。请参阅MSDN 文章

于 2012-03-13T20:01:02.987 回答
0

我认为您的装配信息在某种程度上发生了变化。例如,在移动您的 exe 之前,它是 1.0.0.0 版本,而在另一个目录中,您放置了不同的 1.0.0.1 版本。在这种情况下,这两个不同版本的隔离存储位置(请参阅另一个答案)中应该有两个单独的目录。

或者,您第一次在 VS 中以调试模式运行应用程序时,您可能会移动您的 exe 并直接运行它。在这种情况下,应该有两个不同的目录,例如yourappnameyourappname.vschost

无论如何,请检查您的隔离存储位置以获取更多信息。

于 2012-03-14T04:31:46.530 回答
0

我自己尝试过,我注意到,当您将应用程序移到另一个文件夹中时,IsolatedStorageFile 实例上的 AssemblyIdentity 会发生变化。

为防止这种情况,您必须对程序集进行签名,然后才能将应用程序移动到另一个文件夹中,并且仍然为隔离的存储文件使用相同的位置。

于 2017-01-11T14:19:42.037 回答