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