diff --git a/TweaksLauncher.API/ProxyGenerator.cs b/TweaksLauncher.API/ProxyGenerator.cs index dda1337..a0c1d97 100644 --- a/TweaksLauncher.API/ProxyGenerator.cs +++ b/TweaksLauncher.API/ProxyGenerator.cs @@ -1,6 +1,5 @@ using Cpp2IL.Core; using Cpp2IL.Core.Api; -using Cpp2IL.Core.InstructionSets; using Cpp2IL.Core.OutputFormats; using Cpp2IL.Core.ProcessingLayers; using Il2CppInterop.Generator; @@ -43,8 +42,7 @@ public unsafe static bool Generate() if (unityLibsPath == null) return false; - InstructionSetRegistry.RegisterInstructionSet(Environment.Is64BitProcess ? DefaultInstructionSets.X86_64 : DefaultInstructionSets.X86_32); - LibCpp2IlBinaryRegistry.RegisterBuiltInBinarySupport(); + Cpp2IlApi.Init(); Cpp2IlApi.InitializeLibCpp2Il(Launcher.Context.GameAssemblyPath, Launcher.Context.GlobalMetadataPath, new((ushort)Launcher.Context.UnityVersion.Major, (ushort)Launcher.Context.UnityVersion.Minor, (ushort)Launcher.Context.UnityVersion.Build), false); @@ -62,8 +60,8 @@ public unsafe static bool Generate() Cpp2IlApi.CurrentAppContext = null; var cecilDummies = new List(asmResolverDummies.Count); - var cecilResolver = new DefaultAssemblyResolver(); - using var memoryStream = new MemoryStream(10000); //10 kb initial capacity + var cecilResolver = new CecilTools.RegistryAssemblyResolver(); + using var memoryStream = new MemoryStream(100000); //100 kb initial capacity foreach (var dummy in asmResolverDummies) { memoryStream.Seek(0, SeekOrigin.Begin); @@ -78,7 +76,7 @@ public unsafe static bool Generate() AssemblyResolver = cecilResolver }); - cecilResolver.RegisterAssembly(cecilDummy); + cecilResolver.Register(cecilDummy); cecilDummies.Add(cecilDummy); } @@ -89,7 +87,8 @@ public unsafe static bool Generate() Source = cecilDummies, OutputDir = Launcher.Context.ProxiesDirectory, UnityBaseLibsDir = unityLibsPath, - Parallel = true + Parallel = true, + NoXrefCache = true }); interopGenerator.AddInteropAssemblyGenerator(); @@ -124,13 +123,13 @@ public unsafe static bool Generate() return versionDir; using var http = new HttpClient(); - var resp = await http.GetAsync($"https://github.com/LavaGang/Unity-Runtime-Libraries/raw/master/{versionString}.zip", HttpCompletionOption.ResponseHeadersRead); + var resp = await http.GetAsync($"https://github.com/LavaGang/Unity-Runtime-Libraries/raw/master/{versionString}.zip", HttpCompletionOption.ResponseContentRead); if (!resp.IsSuccessStatusCode) return null; using var content = new MemoryStream(await resp.Content.ReadAsByteArrayAsync()); - var zip = new ZipArchive(content, ZipArchiveMode.Read); + using var zip = new ZipArchive(content, ZipArchiveMode.Read); zip.ExtractToDirectory(versionDir); return versionDir; diff --git a/TweaksLauncher.API/TweaksLauncher.API.csproj b/TweaksLauncher.API/TweaksLauncher.API.csproj index ea350b1..e101645 100644 --- a/TweaksLauncher.API/TweaksLauncher.API.csproj +++ b/TweaksLauncher.API/TweaksLauncher.API.csproj @@ -20,7 +20,7 @@ - + diff --git a/TweaksLauncher.API/Utility/CecilTools.cs b/TweaksLauncher.API/Utility/CecilTools.cs index f0d6076..a476c24 100644 --- a/TweaksLauncher.API/Utility/CecilTools.cs +++ b/TweaksLauncher.API/Utility/CecilTools.cs @@ -1,19 +1,14 @@ using Mono.Cecil; -using System.Reflection; namespace TweaksLauncher.Utility; internal static class CecilTools { - private static readonly MethodInfo registerAssemblyMet; - - static CecilTools() - { - registerAssemblyMet = typeof(DefaultAssemblyResolver).GetMethod("RegisterAssembly", BindingFlags.Instance | BindingFlags.NonPublic)!; - } - - public static void RegisterAssembly(this DefaultAssemblyResolver resolver, AssemblyDefinition assembly) + public class RegistryAssemblyResolver : DefaultAssemblyResolver { - registerAssemblyMet.Invoke(resolver, [assembly]); + public void Register(AssemblyDefinition assembly) + { + RegisterAssembly(assembly); + } } }