我在C#.net应用程序中使用IsolatedStorage技术。
我的应用程序将数据保存在隔离存储中名为MyData.dat的文件中。
当我打开我的应用程序时,它会重新加载该数据并将其打印在屏幕上。
当我将我的应用程序移动到另一个目录时,例如从D:\ MyApp.exe移动到D:\ Apps \ MyApp.exe,然后从它的新目录运行该应用程序,它无法加载文件MyData.dat( FileNotFoundException)因为它在不同的地方寻找不同的MyData.dat文件..
有人知道如何保存我的隔离文件 - MyData.dat文件在一个地方,无论我打开我的App.exe它会找到它吗?
答案 0 :(得分:1)
检查两种情况下的 IsolatedStorage 目录。即使机器相同,预期存储路径对于不同位置的同一应用程序也可能不同。
答案 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会发生变化。
为防止出现这种情况,您必须对程序集进行签名,然后才能将应用程序移动到另一个文件夹中,并且仍然对隔离的存储文件使用相同的位置。