Windows 8アプリケーションにいくつかのデータがありますが、これは同梱する必要があり、静的データです。実際:これは単純なxmlファイルであり、逆シリアル化する必要があります。
データはAssets\data.xmlに保存されます(AssetsはBlank App Templateのデフォルトフォルダーです)。
私はそれにアクセスするためにこのコードを使用しています:
private static async Task<MyObject> Load()
{
if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)
{
return new SampleData();
}
var uri = new Uri("ms-appx:///Assets/data.xml");
Debug.WriteLine("Getting file from Application");
var file = await StorageFile.GetFileFromApplicationUriAsync(uri);
Debug.WriteLine("Opening file for reading async");
var stream = await file.OpenStreamForReadAsync();
var serializer = new XmlSerializer(typeof(MyObject));
Debug.WriteLine("Begin deserialization");
var result = (MyObject)serializer.Deserialize(stream.AsInputStream().AsStreamForRead());
return result;
}
メソッドの呼び出し:
public static MyObject GetMyObject()
{
if (_myObject == null)
{
_myObject = Load().Result;
}
return _myObject;
}
それについての「面白い」部分は次のとおりです。
にブレークポイントを設定し、var uri = new Uri(...);
F11を使用してコードをステップ実行すると、すべてが期待どおりに機能します。すべてのデバッグ行を取得し、アプリケーションは必要に応じて静的データを表示します。
ブレークポイントを設定せず、このコードをステップオーバーしない場合、のデバッグ出力のみが取得され、Getting a file from Application
それ以上何も起こりません。GetFileFromApplicationUriAsync()
二度と戻ってこないようです。5分以上待ちましたが、何も起こりませんでした。
誰かアイデアがありますか?