使用智能装配自动记录错误并终止应用程序



我正在使用SmartAssembly进行一般代码混淆以及应用程序中的错误报告。

如果我的应用程序遇到未经处理的异常,我希望记录异常,然后在没有任何用户交互的情况下终止应用程序。是否可以创建一个允许这样做的智能装配项目?

我尝试在 SmartAssembly GUI 以及命令行中设置项目,但没有运气。以下是我尝试过的命令和参数,但到目前为止,我无法确定如何让它在没有用户输入的情况下终止应用程序并记录错误。

创建 SA 项目:

"C:Program FilesRed GateSmartAssembly 6SmartAssembly.com" 
/create shell.saproj  input=C:RepositoriesMyAppsrcshell.exe 
/output=shell.exe 
/reportappname="MyTestApp" 
/errorreportingtemplate=standard;continueonerror=false,email:"my@email.com"
/reportprojectname="Shell" 
/reportcompanyname="My Company"

构建项目:

"C:Program FilesRed GateSmartAssembly 6SmartAssembly.com" /build shell.saproj

SmartAssembly 包含一些自定义错误报告模板的示例,
位于Red Gate/SmartAssembly 6/SDK/Exception Reporting/

这些示例分为几类:

Without UI Standard Custom UI Via Email Secured Proxy Silverlight Silverlight Basic

在这些文件夹中,每个文件夹中都有一个 .csproj 文件,可以对其进行扩展以获得所需的结果。Without UI文件夹内是我们要做的项目,标题为Sample 01 - Without User Interface.csproj

如果您只是想要使用.dll并且不关心可重用的解决方案,请直接编辑此文件并使用生成的.dll文件(另一种方法是创建一个新项目,并拉入对SmartAssembly.SmartExceptionsCore的引用(。

编辑OnReportException函数,如下所示:

protected override void OnReportException(ReportExceptionEventArgs e)
    {
        for (int i=0; i<3; i++)
        {
            if (e.SendReport()) break;
        }
        e.TryToContinue = false;
        System.Diagnostics.Process proc = System.Diagnostics.Process.GetCurrentProcess();
        proc.Kill();
    }

如果您感到困惑,这是最终结果的要点。

使用 GUI 或通过 cmd 创建项目文件:

"C:Program FilesRed GateSmartAssembly 6SmartAssembly.com" 
/create shell.saproj  input=C:RepositoriesMyAppsrcshell.exe 
/output=shell.exe 
/reportappname="MyTestApp" 
/errorreportingtemplate=MySmartAssemblyLogger.dll;continueonerror=false,email:"my@email.com"
/reportprojectname="Shell" 
/reportcompanyname="My Company"

使用 GUI 或通过 cmd 构建:

"C:Program FilesRed GateSmartAssembly 6SmartAssembly.com" /build shell.saproj

根据网站上的例子 http://www.red-gate.com/supportcenter/Content/SmartAssembly/help/6.7/SA_UsingTheCommandLine

您应该将"标准"替换为"自动",这应该在不显示用户对话框的情况下发送错误报告。

相关内容

  • 没有找到相关文章

最新更新