Подтвердить что ты не робот

Игнорировать исключения, которые пересекают AppDomains при отладке в Visual Studio 2010

У меня возникают проблемы с отладкой приложения, которое вызывает другой AppDomain, потому что, если исключение происходит во всех других приложениях AppDomain, исключение пузырится и заставляет Visual Studio 2010 ломаться, несмотря ни на что.

Я правильно упаковал вызов метода, который выбрасывает в try/catch, и исключение правильно поймано, когда я запускаю приложение (приложение ASP.NET MVC) нормально, но при отладке w3wp.exe в Visual Studio 2010, он всегда ломается на вызов метода, который бросает, и я не могу пройти мимо исключения, даже если он должен быть пойман.

Я попытался украсить внешний метод, в котором вызов метода try/catch и throwing выполняется с помощью [DebuggerStepThrough], но это абсолютно не влияет. Выполнение "Продолжить (F5)", "Step over (F10)" или "Step Out (F11)" ничего не делает; Visual Studio просто приостанавливается на некоторое время, а затем снова разрывается в одном и том же месте с тем же самым исключением. После того, как Visual Studio остановилась в точке, в которой происходит исключение, кажется, нет абсолютно никакого способа двигаться дальше.

То, что я делаю, это вызов assembly.GetExportedTypes(), который может выдаваться, если экспортируемый тип ссылается на сборку, которая не может быть найдена (это обстоятельство я хочу игнорировать). Исключение составляет:

FileNotFoundException пересек собственную/управляемую границу

Я правильно ловил FileNotFoundException и, как я уже сказал, работает при запуске приложения, но не во время отладки. Как я могу заставить отладчика понять, что я даю задницу крыс, если assembly.GetExportedTypes() бросает?

Обновление:

Мне показалось, что это было завершено, сняв флажок в Visual Studio 2010 под названием "Break, если исключения пересекаются с AppDomain или управляемыми/родными границами (только для управляемых)" (в разделе "Отладка" > "Общие" ), но проблема снова появилась, Я поместил [DebuggerStepThrough], [DebuggerStepperBoundary] и [DebuggerNonUserCodeAttribute] в рассматриваемый метод с любым эффектом.

4b9b3361

Ответ 1

В Visual Studio 2010 есть опция "Перерыв, когда исключения пересекаются с доменами AppDomain или управляемыми/родными (только для управляемых)" (в разделе "Отладка" > "Общие" ), что иногда не помогает, иногда помогает. Когда этого не происходит, мне нужно выйти из Visual Studio 2010, удалить все временные файлы, а затем повторить попытку. Не очень изящное решение, поэтому, если у кого-нибудь есть лучшие идеи, пожалуйста, предоставьте их.