2011-06-12 90 views
13

在以前版本的Visual Studio中,只有一个入口指向扩展(更具体地说,插件)OnConnect方法。从那里可以执行所有的Visual Studio操作,比如添加菜单项并设置一个全局异常处理程序,以优雅地处理未处理的异常。为Visual Studio 2010制作全局异常处理程序VsPackage

在Visual Studio 2010的VSPackage的,事物的工作方式不同 - 应用程序(如IWpfTextView)的许多部分是由MEF组成和下载,而包的显式控制,使得处理那些非常困难的未来的任何异常。

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

+0

嗯,伙计。我刚刚给以利沙写了一封信,提出了几乎同样的问题。咄。 – Restuta 2011-06-15 22:46:12

+0

考虑增加一个赏金=) – Restuta 2011-06-15 22:53:16

回答

3

我通过阅读官方VsExtensibility论坛,并根据thisthis线程有没有这样一个地方挂钩用于捕获所有异常探讨这个话题。因此,典型的解决方案将使用尝试...捕获无处不在。

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