从Visual Studio中将文件添加到WP7独立存储?

时间:2010-09-11 11:31:13

标签: windows-phone-7 isolatedstorage

我正在开发一个Windows Phone 7应用程序,我将用bing地图显示ATM的位置。

我有一个带地址和gps坐标的xml文件。但是如何从visual studio将此文件添加到我的程序中?如果我将BuildAction设置为Content并将Copy复制到输出目录,则始终为Copy。该文件仍然不在IsolatedStorage中。我是否必须构建一种从Web下载信息的机制?或者还有另一种方式吗?

3 个答案:

答案 0 :(得分:4)

在Visual Studio项目中列为内容的文件将复制到生成的XAP文件(类似于ZIP文件)。它们不会复制到隔离存储中。

对于XML文件,您可以使用文件路径作为参数调用XmlReader.Create,如下所示:

using (XmlReader reader = XmlReader.Create("path/to/file.xml"))
{
    // read XML file here
}

或者您也可以调用Application.GetResourceStream并使用返回的Stream对象的StreamResourceInfo属性:

StreamResourceInfo sri = Application.GetResourceStream(
    new Uri("path/to/file.xml", UriKind.Relative));
// read XML file here from sri.Stream, e.g. using a StreamReader object

答案 1 :(得分:2)

您无法在设计时直接将文件传递到隔离存储。仅在应用程序运行时。

我仍然建议您通过网络服务将文件传递给应用程序。主要是因为如果最终需要更改XML的内容,则需要更新应用程序。

我要做的只是创建一个WCF服务,它将通过一个简单的HTTP请求返回序列化数据(或现有的XML)。

答案 2 :(得分:1)

“Mango”SDK附带ISETool,可以将应用程序隔离存储的快照存储到本地目录或从本地目录恢复:

# Copy data from IS to directory
ISETool.exe ts xd <PRODUCT-ID> "C:\TempDirectory\IsolatedStore"

# Copy data from IS to directory
ISETool.exe rs xd <PRODUCT-ID> "C:\TempDirectory\IsolatedStore"

如果您不想覆盖整个IS,该工具支持一个选项(device-folder),用于指定要备份/恢复的子目录。