Próbuję załadować kilka modułów poprzez zahaczanie o zdarzenia AppDomain.AssemblyResolve
i AppDomain.ReflectionOnlyAssemblyResolve
. Kiedy zatrudniłem tę pierwszą do pracy, nieszczęsna mi jest ta ostatnia. Ja gotuje mój problem w dół do tego małego programu:Dlaczego funkcja ReflectionOnlyAssemblyResolve nie jest wykonywana podczas próby 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;
}
}
Uruchomienie tego programu nie powiedzie się z FileNotFoundException
podczas próby Assembly.ReflectionOnlyLoad
, ale nie wywołuje procedurę obsługi ReflectionOnlyAssemblyResolve. Jestem tam bardzo zaskoczony.
Czy ktoś ma pomysł, co może być przyczyną tego i jak to działa?
Dzięki!
Czy istnieje sposób na przechwycenie niepowodzenia w próbie załadowania tylko odbiciem zespołu? – derabbink
@derabbink To osobne pytanie, wyobrażam sobie. – casperOne