Только потому, что я обнаружил это сегодня (и мне действительно нравится воскрешать старые вопросы с не слишком полезными ответами!), Начиная с .NET4, на AppDomain
появляется новое событие, которое запускается перед обработкой любых исключений. *
В определенный момент в коде установки для вашего приложения (например, Program.Main
, Application_OnStart
и т. Д.) Вы можете добавить обработчик:
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.FirstChanceException
+= FirstChanceException
// ...rest of your app startup
}
private static bool LogFirstChanceExceptions
{
get
{
return ConfigurationManager.AppSettings["logFirstChanceExceptions"]
.Equals(bool.TrueString)
}
}
private static void FirstChanceException(object sender,
FirstChanceExceptionEventArgs e)
{
if (e != null &&
e.Exception != null &&
LogFirstChanceExceptions)
{
Console.Error.WriteLine("First-chance {0}: {1}",
e.Exception.GetType(),
e.Exception.Message);
}
}
}
(не проверено, без гарантии и т. Д. Не изображено: любая обработка повторного входа, если обработчик FirstChanceException
сам вызывает исключение)
Не помогает OP, но это может помочь людям, которые могут перекомпилировать, включить что-то, что позволит им переключать этот вид трассировки в будущем.