移动申请EXE时无法打开我的孤立的存储文件
-
13-12-2019 - |
题
我在我的c#.NET应用程序中使用DistractStorage技术。
我的应用程序在孤立的存储中保存在名为mydata.dat的文件中的数据。
当我打开我的应用程序时,它将重新加载数据并在屏幕上打印它。
当我将应用程序移动到另一个目录时,例如从d:\ myapp.exe到d:\ apps \ myapp.exe,然后从它的新目录运行应用程序,它失败加载文件mydata.dat(filenotfoundException)因为它在不同的地方寻找不同的mydata.dat文件..
有人知道我如何将孤立的文件保存 - mydata.dat文件在一个地方,无论我打开我的app.exe它会找到它吗?
解决方案
检查在两种情况下检索的 solictstorage 的目录。即使机器是相同的,预期存储路径也可以不同于不同位置的相同应用程序。
其他提示
我认为您的装配信息已以某种方式更改。例如,在移动exe之前,它是1.0.0.0版本,在另一个目录中放置不同版本1.0.0.1。在这种情况下,应该有两个单独的目录中的隔离存储位置(请参阅这两个不同版本的另一个答案)。
否则您可能首次在VS内部的调试模式下运行应用程序,然后移动EXE并直接运行它。在这种情况下,应该有两个不同的目录,如 yourappname 和 yourappname.vschost 。
无论如何请检查您的孤立的存储位置以获取更多信息。
您可以使用IsolatedStorageFile.GetUserStoreForAssembly
来获取可以使用的商店,只要易于同种的身份不变。所以它也将独立于exe文件的位置。查看 MSDN文章
我自己尝试了它,我注意到当您在另一个文件夹中移动应用程序时,我注意到solorderagefile实例上的组装。
要防止此操作,您必须签署组件,只有您可以将应用程序移动到另一个文件夹中,仍然对孤立的储档文件的相同位置。