移动我的应用程序exe时无法打开我的孤立存储文件

时间:2012-03-13 19:24:49

标签: c# .net isolatedstorage isolatedstoragefile

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

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

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

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

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

4 个答案:

答案 0 :(得分:1)

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

Get isolation storage path

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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