У меня возникают проблемы с отладкой приложения, которое вызывает другой 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]
в рассматриваемый метод с любым эффектом.