Во-первых, извините за то, что должен быть дубликат поста. Кажется, я не могу сузить свой поиск на SO и Google, чтобы найти то, что я ищу.
В настоящее время я работаю в магазине, где им нравятся всплывающие исключения. Когда скомпилированное приложение отправляется на тестирование, очень сложно получить подробности об исключении (трассировка сообщения и стека). Windows показывает ту знакомую коробку, в которой отсутствуют какие-либо подробности.
Потратив около часа, чтобы выяснить, что тестовая коробка имеет неверную версию отчетов Crystal, я добавил этот простой код, с которым, возможно, знаком каждый.
static void Main(string[] arg)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run( ... );
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.ToString());
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show((e.ExceptionObject as Exception).ToString());
}
Это выполнит работу, но мне не разрешено ее регистрировать. Есть ли способ в app.config или через настройки реестра, чтобы CLR отображал или регистрировал подробности исключений для скомпилированного приложения .net?
Заранее спасибо за помощь.