У меня есть проблемы с отладкой приложения, которое обращается к другому AppDomain, потому что, если исключение происходит в том, что другой AppDomain делает, пузыри исключения и заставляет Visual Studio 2010 повреждаться несмотря ни на что.
Я правильно перенес вызов метода, который добавляет a try/catch
, и исключение правильно поймано, когда я запускаю приложение (приложение MVC ASP.NET) обычно, но при отладке w3wp.exe
в Visual Studio 2010 это всегда повреждается на вызове метода, который бросает и нет никакого способа, которым я могу закончить исключение даже при том, что это должно быть поймано.
Я попытался украсить внешний метод в который try/catch
и бросок вызова метода, покончили [DebuggerStepThrough]
но это не имеет абсолютно никакого эффекта. Выполнение "Продолжается (F5)", "Переступают (F10)", или "Выходят (F11)" ничего не делает также; Visual Studio просто паузы некоторое время и затем повреждается снова в том же самом пятне за тем же самым исключением. После того как Visual Studio остановилась в точке, в которой происходит исключение, кажется, нет абсолютно никакого способа идти дальше.
Что я делаю, точно звонит assembly.GetExportedTypes()
который может бросить, если экспортируемый тип ссылается на блок, который не может быть найден (обстоятельство, которое я хочу проигнорировать). Выданное исключение:
FileNotFoundException пересек собственную/управляемую границу
Я ловлю FileNotFoundException
правильно и поскольку я сказал, что работы при запуске приложения, но не при отладке. Как я могу заставить отладчик понять, что я даю задницу крыс если assembly.GetExportedTypes()
броски?
Я думал, что мне обернули это путем снятия выделения с опцией в Visual Studio 2010, названный "Повреждение, когда исключения пересекают AppDomain или управляемые/собственные границы (Управляемый только)" (при Отладке> Общий), но проблема открылась снова сейчас. Я опрыснул [DebuggerStepThrough]
, [DebuggerStepperBoundary]
и [DebuggerNonUserCodeAttribute]
на методе рассматриваемый withuot любой эффект.
В Visual Studio 2010 есть опция "Break when exceptions cross AppDomain or managed/native boundaries (Managed only)" (в разделе Debugging > General), которая, если снять галочку, иногда помогает. Когда это не помогает, мне нужно выйти из Visual Studio 2010, удалить все временные файлы, а затем попробовать снова. Не очень элегантное решение, так что если у кого-то есть идеи получше, пожалуйста, поделитесь ими.