3
我想用hockeyapp发送错误报告,而不必让整个应用程序崩溃并烧毁。我不认为HockeyApp.WPF库有这个功能,所以我开始乱搞执行我自己的CrashHandler。使用HockeyApp发送处理的异常报告(Windows)
这很快就让人感到困惑和非常hackey。有没有人有任何代码示例?以我目前的速度,我将最终复制HockeyApp图书馆的一半,所以我希望能得到一些帮助。
我不张贴我的代码,因为我不认为它会有帮助,它太多了。
编辑:现在,我将发布的,这并不码的缩短版似乎工作:
private static void HandleException(Exception e) {
try {
string crashID = Guid.NewGuid().ToString();
String filename = String.Format("{0}{1}.log", CrashFilePrefix, crashID);
CrashLogInformation logInfo = new CrashLogInformation() {
PackageName = Application.Current.GetType().Namespace,
Version = ((HockeyClient)HockeyClient.Current).VersionInfo,
OperatingSystem = Environment.OSVersion.Platform.ToString(),
Windows = Environment.OSVersion.Version.ToString() + Environment.OSVersion.ServicePack,
Manufacturer = "",
Model = ""
};
ICrashData crash = ((HockeyClient)HockeyClient.Current).CreateCrashData(e);
using (FileStream stream = File.Create(Path.Combine(GetPathToHockeyCrashes(), filename))) {
crash.Serialize(stream);
stream.Flush();
}
}
catch (Exception ex) {
((HockeyClient)HockeyClient.Current).HandleInternalUnhandledException(ex);
}
}
private static string GetPathToHockeyCrashes() {
string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
if (!path.EndsWith("\\")) { path += "\\"; }
path += "HockeyCrashes\\";
if (!Directory.Exists(path)) { Directory.CreateDirectory(path); }
return path;
}
private struct CrashLogInformation {
/// <summary>
/// name of app package
/// </summary>
public string PackageName;
/// <summary>
/// version of app
/// </summary>
public string Version;
/// <summary>
/// os
/// </summary>
public string OperatingSystem;
/// <summary>
/// device manufacturer
/// </summary>
public string Manufacturer;
/// <summary>
/// device model
/// </summary>
public string Model;
/// <summary>
/// product id of app
/// </summary>
public string ProductID;
/// <summary>
/// windows phone version
/// </summary>
public string WindowsPhone;
/// <summary>
/// windows version
/// </summary>
public string Windows;
}
我不确定这是不是存在于2015年,但今天有Microsoft.HockeyApp.HockeyClient.Current.TrackException(ex,properties);它在HockeyApp.Core包 – batmaci 2017-01-03 17:16:48
可能不存在。不再和曲棍球一起工作了,但是如果你提交了一个答案,而其他人确认了,那么我将把你的答案设定为已接受的答案(我可以这样做,它已经有一段时间了?)。 – Theyouthis 2017-01-03 18:52:15
如果我可能会问,您使用了什么替代方法以及哪种类型的应用程序? – batmaci 2017-01-03 18:58:47