public static void DoPass(RewriteGlobalContext context) { var typesUnstripped = 0; foreach (var unityAssembly in context.UnityAssemblies.Assemblies) { var processedAssembly = context.TryGetAssemblyByName(unityAssembly.Name.Name); if (processedAssembly == null) { var newAssembly = new AssemblyRewriteContext(context, unityAssembly, AssemblyDefinition.CreateAssembly(unityAssembly.Name, unityAssembly.MainModule.Name, ModuleKind.Dll)); context.AddAssemblyContext(unityAssembly.Name.Name, newAssembly); processedAssembly = newAssembly; } var imports = processedAssembly.Imports; foreach (var unityType in unityAssembly.MainModule.Types) { ProcessType(processedAssembly, unityType, null, imports, ref typesUnstripped); } } LogSupport.Trace(""); // end the progress message LogSupport.Trace($"{typesUnstripped} types restored"); }
public static void DoPass(RewriteGlobalContext context) { var unityAssemblyFiles = Directory.EnumerateFiles(context.Options.UnityBaseLibsDir, "*.dll"); var loadedAssemblies = unityAssemblyFiles.Select(it => AssemblyDefinition.ReadAssembly(it, new ReaderParameters(ReadingMode.Deferred))).ToList(); var typesUnstripped = 0; foreach (var unityAssembly in loadedAssemblies) { var processedAssembly = context.TryGetAssemblyByName(unityAssembly.Name.Name); if (processedAssembly == null) { var newAssembly = new AssemblyRewriteContext(context, unityAssembly, AssemblyDefinition.CreateAssembly(unityAssembly.Name, unityAssembly.MainModule.Name, ModuleKind.Dll)); context.AddAssemblyContext(unityAssembly.Name.Name, newAssembly); processedAssembly = newAssembly; } var imports = processedAssembly.Imports; foreach (var unityType in unityAssembly.MainModule.Types) { ProcessType(processedAssembly, unityType, null, imports, ref typesUnstripped); } } LogSupport.Trace(""); // end the progress message LogSupport.Trace($"{typesUnstripped} types restored"); }