在Visual Studio 2010中进行调试时,忽略跨AppDomains的exception

我在调试调用另一个AppDomain的应用程序时遇到问题,因为如果在其他AppDomain正在执行的任何操作中发生exception,则exception会冒泡并导致Visual Studio 2010无论如何都会中断。

我正确地包装了在try/catch中抛出的方法调用,并且当我正常运行应用程序(ASP.NET MVC应用程序)时正常捕获exception,但是在Visual Studio 2010中调试w3wp.exe时,它总是打破抛出的方法调用,即使应该被捕获,我也无法通过exception。

我试图装饰使用[DebuggerStepThrough]完成try/catch和throw方法调用的外部方法,但这绝对没有效果。 执行“继续(F5)”,“跳过(F10)”或“跳出(F11)”也不执行任何操作; Visual Studio只是稍微暂停一下,然后在相同的位置再次中断并使用完全相同的exception。 一旦Visual Studio在发生exception的位置停止,似乎绝对没有办法继续前进。

我正在做的就是调用assembly.GetExportedTypes() ,如果导出的类型引用了一个无法找到的程序集(我想忽略的情况assembly.GetExportedTypes() ,它可能会抛出。 抛出的exception是:

FileNotFoundException越过了本机/托管边界

正如我所说,我正在捕捉FileNotFoundException ,它在运行应用程序时有效,但在调试时无效。 如果assembly.GetExportedTypes()抛出,我怎么能让调试器理解我给老鼠屁股?

更新:

我认为通过取消选中Visual Studio 2010中的选项“当exception跨越AppDomain或托管/本地边界(仅管理)”(在“调试”>“常规”下)时,我已经解决了这个问题,但此问题刚刚再次出现。 我已经在有问题的方法上使用了[DebuggerStepThrough][DebuggerStepperBoundary][DebuggerNonUserCodeAttribute] ,但没有任何效果。

Visual Studio 2010中有一个选项称为“当exception跨越AppDomain或托管/本机边界时断开(仅限托管)”(在调试>常规下),当取消选中时,有时会有所帮助。 如果不是,我需要退出Visual Studio 2010,删除所有临时文件,然后再试一次。 不是一个非常优雅的解决方案,所以如果有任何更好的想法,请提供它们。