private static Assembly Resolve(string requested_name, Version requested_version, bool is_preload) { // Get Resolve Information Object AssemblyResolveInfo resolveInfo = GetInfo(requested_name); // Resolve the Information Object Assembly assembly = resolveInfo.Resolve(requested_version); // Run Passthrough Events if (assembly == null) { assembly = MonoResolveManager.SafeInvoke_OnAssemblyResolve(requested_name, requested_version); } // Search Directories if (is_preload && (assembly == null)) { assembly = SearchDirectoryManager.Scan(requested_name); } // Load if Valid Assembly if (assembly != null) { LoadInfo(assembly); } // Return return(assembly); }
private static int Initialize() { AppDomain curDomain = AppDomain.CurrentDomain; Fixes.UnhandledException.Install(curDomain); MelonUtils.Setup(curDomain); Assertions.LemonAssertMapping.Setup(); if (!MonoLibrary.Setup() || !MonoResolveManager.Setup()) { return(1); } HarmonyInstance = new HarmonyLib.Harmony(BuildInfo.Name); Fixes.ForcedCultureInfo.Install(); Fixes.InstancePatchFix.Install(); Fixes.ProcessFix.Install(); PatchShield.Install(); MelonPreferences.Load(); MelonLaunchOptions.Load(); bHaptics.Load(); MelonCompatibilityLayer.Setup(); MelonCompatibilityLayer.SetupModules(MelonCompatibilityLayer.SetupType.OnPreInitialization); MelonHandler.LoadPlugins(); MelonHandler.OnPreInitialization(); return(0); }
internal static void LoadInfo(Assembly assembly) { // Get AssemblyName AssemblyName assemblyName = assembly.GetName(); // Get Resolve Information Object AssemblyResolveInfo resolveInfo = GetInfo(assemblyName.Name); // Set Version of Assembly resolveInfo.SetVersionSpecific(assemblyName.Version, assembly); // Run Passthrough Events MonoResolveManager.SafeInvoke_OnAssemblyLoad(assembly); }
public override void Setup() { // To-Do: // Detect if IPA is already Installed // Point AssemblyResolveInfo to already installed IPA Assembly // Point GetResolverFromAssembly to Dummy MelonCompatibilityLayer.Resolver string[] assembly_list = { "IllusionPlugin", "IllusionInjector", }; Assembly base_assembly = typeof(IPA_Module).Assembly; foreach (string assemblyName in assembly_list) { MonoResolveManager.GetAssemblyResolveInfo(assemblyName).Override = base_assembly; } MelonCompatibilityLayer.AddAssemblyToResolverEvent(GetResolverFromAssembly); }
public override void Setup() { // To-Do: // Detect if MuseDashModLoader is already Installed // Point AssemblyResolveInfo to already installed MuseDashModLoader Assembly // Point GetResolverFromAssembly to Dummy MelonCompatibilityLayer.Resolver string[] assembly_list = { "ModHelper", "ModLoader", }; Assembly base_assembly = typeof(MuseDashModLoader_Module).Assembly; foreach (string assemblyName in assembly_list) { MonoResolveManager.GetAssemblyResolveInfo(assemblyName).Override = base_assembly; } MelonCompatibilityLayer.AddAssemblyToResolverEvent(GetResolverFromAssembly); }