为Visual Studio 2010 VsPackage创建全局异常处理程序

Iga*_*nik 14 exception-handling visual-studio-2010 vspackage

在以前版本的Visual Studio中,只有一个扩展名的入口点(更具体地说,是一个插件),该OnConnect方法.从那里可以执行所有Visual Studio操作,例如添加菜单项和设置全局异常处理程序,以优雅地处理未处理的异常.

在Visual Studio 2010的VsPackage中,事情的工作方式不同 - 应用程序的许多部分(例如IWpfTextView)由MEF组成,并且在没有明确控制包的情况下加载,从而处理来自那些非常困难的异常.

如果没有将所有这些组件明确地包装在try..catch自己的组件中,我怎样才能有效地为我的VsPackage中的(非关键)异常实现全局处理程序?同样,目标是使用ReSharper的异常对话框,它可以处理全局异常而不会崩溃Visual Studio.

Res*_*uta 4

我通过阅读官方 VsExtensibility 论坛研究了这个主题,根据这个这个线程,没有这样一个地方可以用来捕获所有异常。因此,典型的解决方案是到处使用try...catch

我建议使用像PostSharp这样的 AOP 框架之一来通过属性来完成此任务,以消除大量蹩脚的重复代码,这些代码的唯一目的是处理未处理的异常。