Sto provando a caricare alcuni moduli tramite l'aggancio negli eventi AppDomain.AssemblyResolve
e AppDomain.ReflectionOnlyAssemblyResolve
. Mentre ho fatto in modo che il primo funzionasse, fallisco miseramente su quest'ultimo. Ho bollito mio problema fino a questo piccolo programma:Perché ReflectionOnlyAssemblyResolve non viene eseguito quando si prova a Assembly.ReflectionOnlyLoad?
public static class AssemblyLoader
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve +=
ReflectionOnlyAssemblyResolve;
// fails with FileNotFoundException
Assembly.ReflectionOnlyLoad("Foo");
}
public static Assembly ReflectionOnlyAssemblyResolve(object sender,
ResolveEventArgs args)
{
Trace.TraceInformation(
"Failed resolving Assembly {0} for reflection", args.Name);
return null;
}
}
L'esecuzione di questo programma non riesce con un FileNotFoundException
quando si cerca di Assembly.ReflectionOnlyLoad
, ma non chiama il gestore ReflectionOnlyAssemblyResolve. Sono piuttosto stordito lì.
Qualcuno ha un'idea di quale potrebbe essere la causa principale di questo e come farlo funzionare?
Grazie!
C'è un modo per intercettare un tentativo fallito di caricamento di sola riflessione di un assieme? – derabbink
@derabbink Questa è una domanda a parte, immagino. – casperOne