Я разработал программное обеспечение .NET 4 и готов отправить его бета-пользователям. Если в программное обеспечение выдается необработанное исключение, я бы хотел его перехватить, записать в журнал и отправить мне. Я уже реализовал эту функцию, и она, кажется, работает нормально, когда я запускаю ее в режиме отладки с Visual Studio. Однако, когда я собрал выпускную версию программного обеспечения и установил его, Microsoft .NET Framework начинает перехватывать исключения перед моим кодом. Я получаю всплывающее окно с сообщением об ошибке: «Необработанное исключение произошло в компоненте вашего приложения. Если вы нажмете« Продолжить », приложение проигнорирует эту ошибку и попытается продолжить.»
Чтобы проверить сбой, я создал кнопку сбоя, которая выдает исключение. Этот сбой регистрирует сам себя, а обработчик исключений регистрирует все полученные необработанные исключения. Когда я просматриваю журнал версии выпуска, я вижу только сообщение журнала после сбоя, но не из обработчика исключений.
Я прикрепил свой собственный обработчик исключений с этим кодом:
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Есть ли способ отключить перехват исключений в .NET Framework или есть лучший способ присоединить мой собственный обработчик исключений?
ОБНОВЛЕНИЕ: Я использую WPF. Я посмотрю на DispatcherUnhandledException и сообщу, решит ли он проблему.
ОБНОВЛЕНИЕ № 2: К сожалению, добавление обработчика в Application.Current.DispatcherUnhandledException не решило проблему. По-видимому, это всплывающее окно отладки создается отладчиком JIT (Just-In-Time), который входит в состав Visual Studio. Мне придется протестировать программное обеспечение с «гражданской» Windows и посмотреть, не обнаруживаются ли там исключения.
ОБНОВЛЕНИЕ № 3: По какой-то причине Релиз, созданный с помощью Visual Studio, работает, но Релиз, построенный с использованием сценариев MSBuild и Dotfuscator, не работает.