2010-09-11 70 views
4

我正在使用Windows Phone 7應用程序,在那裏我將使用bing地圖顯示ATM的位置。將文件從Visual Studio添加到WP7隔離存儲?

我有一個地址和gps座標的xml文件。但是,如何將這個文件從Visual Studio添加到我的程序中?如果我將BuildAction設置爲「內容」並將「複製到輸出目錄」設置爲「始終複製」該文件仍然不在IsolatedStorage中。我必須建立一個機制來從網上下載信息嗎?還是有另一種方式?

回答

2

您不能在設計時直接將文件傳遞到獨立存儲。只有當應用程序正在運行時。

我仍然建議通過Web服務將文件傳遞給應用程序。主要是因爲如果最終您需要更改XML的內容,則需要更新該應用程序。

我會做的只是創建一個WCF服務,該服務將通過簡單的HTTP請求返回序列化的數據(或現有的XML)。

+0

混合方法將是最好的。如果你去網絡,只要沒有網絡,應用程序根本不會做任何事情...... – 2010-09-12 21:43:28

+0

這真的取決於應用程序的功能。在這種情況下,應用程序仍然需要Bing Maps。因此,如果沒有活躍的互聯網連接,它將無法正常工作。因此,這裏僅限於網絡的方法是適當的。 – 2010-09-12 22:02:28

+0

我下載列表的問題是它目前有940kb。它可能會隨着時間的推移而增長。這意味着您第一次運行應用程序時,它會下載相當大的數據。所以我想我會在應用程序中存儲一個初始列表,然後下載更新。客戶可能會喜歡這一點。 – 2010-09-13 08:05:10

4

作爲Visual Studio項目中的內容列出的文件被複制到生成的XAP文件(類似於ZIP文件)。它們不會複製到獨立存儲。

在一個XML文件的情況下,你可以調用XmlReader.Create與文件路徑作爲參數,如下所示:

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

或者,您也可以撥打Application.GetResourceStream和使用返回StreamResourceInfoStream財產object:

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 
+0

如果文件是來自引用項目或程序集的內容,該怎麼辦?我找不到使用Application.GetResourceStream或相對Pack URI格式訪問它的方法... – 2010-10-18 02:47:24

1

的「芒果」 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)。

相關問題