0

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); 
}
4

1 に答える 1

3

アプリケーション名とバージョンは、WMAppManifest.xml ファイルに登録されます。

このサンプルを使用して、「ProductID」を参照する部分を「Title」と「Version」に置き換えると、次のコードにたどり着きました。

var xmlReaderSettings = new XmlReaderSettings
{
    XmlResolver = new XmlXapResolver()
};

using (var xmlReader = XmlReader.Create("WMAppManifest.xml", xmlReaderSettings))
{
    xmlReader.ReadToDescendant("App");

    var AppName = xmlReader.GetAttribute("Title");
    var AppVersion = xmlReader.GetAttribute("Version");
}
于 2013-01-12T01:51:37.323 に答える