Remove temporary assembly resolver early in preloader runner

Rebase of 52353b2
This commit is contained in:
Bepis committed 2020-11-06 11:58:23 +11:00
1 parent fd061962f0
commit 7a3400b7e2
1 file changed
+7 -3
@@ -14,6 +14,8 @@ namespace BepInEx.Preloader.Unity
Paths.SetExecutablePath(EnvVars.DOORSTOP_MANAGED_FOLDER_DIR, bepinPath);
AppDomain.CurrentDomain.AssemblyResolve += LocalResolve;
// Remove temporary resolver early so it won't override local resolver
AppDomain.CurrentDomain.AssemblyResolve -= DoorstopEntrypoint.ResolveCurrentDirectory;
PreloaderMain();
}
@@ -80,16 +82,18 @@ namespace BepInEx.Preloader.Unity
typeof(DoorstopEntrypoint).Assembly.GetType($"BepInEx.Preloader.Unity.{nameof(UnityPreloaderRunner)}")
?.GetMethod(nameof(UnityPreloaderRunner.PreloaderPreMain))
?.Invoke(null, null);
AppDomain.CurrentDomain.AssemblyResolve -= ResolveCurrentDirectory;
}
catch (Exception ex)
{
File.WriteAllText(silentExceptionLog, ex.ToString());
}
finally
{
AppDomain.CurrentDomain.AssemblyResolve -= ResolveCurrentDirectory;
}
}
private static Assembly ResolveCurrentDirectory(object sender, ResolveEventArgs args)
internal static Assembly ResolveCurrentDirectory(object sender, ResolveEventArgs args)
{
// Can't use Utils here because it's not yet resolved
var name = new AssemblyName(args.Name);