4 Stimmen

Hinzufügen von Dateien zum isolierten Speicher von WP7 aus Visual Studio?

Ich arbeite an einer Windows Phone 7-App, in der ich Geldautomaten in Ihrer Nähe mit Bing Maps anzeigen möchte.

Ich habe eine XML-Datei mit Adressen und GPS-Koordinaten. Aber wie füge ich diese Datei aus Visual Studio zu meinem Programm hinzu? Wenn ich BuildAction auf Inhalt und Kopieren in den Ausgabeverzeichnis auf Immer kopieren setze. Die Datei ist immer noch nicht im IsolatedStorage. Muss ich einen Mechanismus entwickeln, um die Informationen aus dem Web herunterzuladen? Oder gibt es einen anderen Weg?

4voto

Andréas Saudemont Punkte 1353

Dateien, die im Visual Studio-Projekt als Inhalt aufgeführt sind, werden in die generierte XAP-Datei kopiert (die analog zu einer ZIP-Datei ist). Sie werden nicht in den isolierten Speicher kopiert.

Im Falle einer XML-Datei können Sie XmlReader.Create mit dem Dateipfad als Argument aufrufen, wie folgt:

using (XmlReader reader = XmlReader.Create("pfad/zur/datei.xml"))
{
    // XML-Datei hier lesen
}

Oder Sie können auch Application.GetResourceStream aufrufen und die Stream-Eigenschaft des zurückgegebenen StreamResourceInfo-Objekts verwenden:

StreamResourceInfo sri = Application.GetResourceStream(
    new Uri("pfad/zur/datei.xml", UriKind.Relative));
// XML-Datei hier von sri.Stream lesen, z.B. mit einem StreamReader-Objekt

2voto

Den Delimarsky Punkte 16440

Sie können Dateien nicht direkt zur isolierten Speicherung zur Designzeit übergeben. Nur wenn die Anwendung läuft.

Ich würde immer noch empfehlen, die Datei über einen Webservice an die Anwendung zu übergeben. Hauptsächlich, weil Sie möglicherweise die Inhalte des XML-Dokuments ändern müssen und daher die Anwendung aktualisieren müssen.

Was ich tun würde, ist einfach einen WCF-Dienst zu erstellen, der serialisierte Daten (oder das vorhandene XML) über einen einfachen HTTP-Request zurückgibt.

1voto

Richard Szalay Punkte 80740

Das "Mango" SDK wird mit dem ISETool geliefert, der Snapshots des isolierten Speichers einer Anwendung in ein lokales Verzeichnis übernehmen und wiederherstellen kann:

# Daten von IS in Verzeichnis kopieren
ISETool.exe ts xd  "C:\TempDirectory\IsolatedStore"

# Daten von IS in Verzeichnis kopieren
ISETool.exe rs xd  "C:\TempDirectory\IsolatedStore"

Wenn Sie nicht den gesamten IS überschreiben möchten, unterstützt das Tool eine Option (device-folder), um ein Unterverzeichnis für das Backup/Wiederherstellung anzugeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X