UnhandledException イベントで WAMS テーブルを設定したいのですが、次のコードを取得しました。
private async void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs args)
{
if (Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
Debugger.Break();
}
PLATYPIRUS_WAMS_EXCEPTIONLOG pruwamsel = new PLATYPIRUS_WAMS_EXCEPTIONLOG();
pruwamsel.appNameAndVersion = "Platypi R Us for WP8 v. 3.14";
pruwamsel.ExceptionMsg = args.ExceptionObject.Message;
pruwamsel.InnerException = args.ExceptionObject.InnerException.ToString();
pruwamsel.ExceptionToStr = args.ToString();
pruwamsel.dateTimeOffsetStamp = DateTimeOffset.UtcNow;
await App.MobileService.GetTable<PLATYPIRUS_WAMS_EXCEPTIONLOG>().InsertAsync(pruwamsel);
}
...しかし、アプリの名前とバージョンをハードコーディングしたくありません。それらをプログラムで抽出するにはどうすればよいですか?
アップデート
2つのアイデアを組み込むと、次のようになります。
private async void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs args)
{
if (Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
Debugger.Break();
}
string appName;
string appVersion;
var xmlReaderSettings = new XmlReaderSettings
{
XmlResolver = new XmlXapResolver()
};
using (var xmlReader = XmlReader.Create("WMAppManifest.xml", xmlReaderSettings))
{
xmlReader.ReadToDescendant("App");
appName = xmlReader.GetAttribute("Title");
appVersion = xmlReader.GetAttribute("Version");
}
PLATYPIRUS_WAMS_EXCEPTIONLOG pruwamsel = new PLATYPIRUS_WAMS_EXCEPTIONLOG();
pruwamsel.appNameAndVersion = string.Format("{0} {1}", appName, appVersion);
pruwamsel.ExceptionMsg = args.ExceptionObject.Message;
pruwamsel.InnerException = args.ExceptionObject.InnerException.ToString();
pruwamsel.ExceptionToStr = args.ExceptionObject.ToString();
pruwamsel.dateTimeOffsetStamp = DateTimeOffset.UtcNow;
await App.MobileService.GetTable<PLATYPIRUS_WAMS_EXCEPTIONLOG>().InsertAsync(pruwamsel);
}