Qualcuno può spiegarmi perché non riesco a generare un'eccezione dall'interno dell'AppDomain.Assembly load event? Per esempio:Eccezione da evento AppDomain.AssemblyLoad
class Program
{
static Program()
{
AppDomain.CurrentDomain.UnhandledException += (s, a) =>
{
Console.WriteLine("Caught exception!");
};
AppDomain.CurrentDomain.AssemblyLoad += (s, a) =>
{
Console.WriteLine(string.Format("Assembly {0} loaded", a.LoadedAssembly.FullName));
throw new Exception();
Console.WriteLine("Should never get here...");
};
}
static void Main(string[] args)
{
Console.WriteLine(new ClassLibrary1.Class1().TestString());
Console.WriteLine();
Console.WriteLine("Done...");
Console.ReadLine();
}
}
Quando eseguo questo, l'uscita è la seguente:
Assembly ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null loaded
TestString
Done...
Qualcuno può spiegare questo comportamento a me? Grazie.
EDIT Per chiarire un paio di cose:
L'evento carico di montaggio funziona bene, quando mi aspetto che venga eseguito. Ma la mia eccezione non viene mai lanciata
Questo è un esempio distillato preso da un'applicazione più grande. Voglio ispezionare il montaggio dopo che è stato caricato e se non mi piace qualcosa, io voglio fallire in fretta ... Ma la mia eccezione non fa 'capita'
stai eseguendo su una macchina a 64 bit? ho avuto un simil ar problema. Vedi: http://stackoverflow.com/questions/4125876/what-happens-when-you-attempt-to-access-a-winforms-treeview-by-keyword-and-that-k/4125994#4125994 – Crisfole
@Cpfohl : Grazie, sono su x64 ma il mio target di piattaforma è già x86 ... – TheNextman
In realtà questo ha senso comunque, poiché l'errore è per il caricamento dei moduli, non per il caricamento generale. – Crisfole