static AssemblyDefinition GetAssembly(ImageReader irv, bool manifestOnly) { StructureReader srv = new StructureReader(irv, manifestOnly); AssemblyDefinition asm = new AssemblyDefinition( new AssemblyNameDefinition(), srv); asm.Accept(srv); return(asm); }
static AssemblyDefinition GetAssembly (ImageReader irv, bool manifestOnly) { StructureReader srv = new StructureReader (irv, manifestOnly); AssemblyDefinition asm = new AssemblyDefinition ( new AssemblyNameDefinition (), srv); asm.Accept (srv); return asm; }
static void WriteAssembly(AssemblyDefinition asm, BinaryWriter bw) { asm.Accept(new StructureWriter(asm, bw)); }
static void WriteAssembly (AssemblyDefinition asm, BinaryWriter bw) { asm.Accept (new StructureWriter (asm, bw)); }
public void Link () { outputAssembly = AssemblyFactory.GetAssembly (Assemblies [0]); mainModule = outputAssembly.MainModule; if (mainModule.Name != MainModuleName) { Console.Error.WriteLine ("Main module is not named \"" + MainModuleName + "\" in assembly " + outputAssembly.Name.FullName); Environment.Exit (1); } mainType = mainModule.Types [MainTypeName]; if (mainType == null) { Console.Error.WriteLine ("Main module does not contain type \"" + MainTypeName + "\" in assembly " + outputAssembly.Name.FullName); Environment.Exit (1); } outputAssembly.Accept (new StructureMerger (this, outputAssembly, outputAssembly)); for (int i = 1; i < Assemblies.Count; i++) { AssemblyDefinition asm = AssemblyFactory.GetAssembly (Assemblies [i]); asm.Accept (new StructureMerger (this, outputAssembly, asm)); } FixReflectionAfterMerge fix = new FixReflectionAfterMerge (this, outputAssembly, outputAssembly); fix.Process (); nativeLibraries.AddExternalMethods (this); if (OutputIsExecutable) { outputAssembly.Kind = AssemblyKind.Console; outputAssembly.EntryPoint = InternalSymbols.EntryPoint; } else { outputAssembly.Kind = AssemblyKind.Dll; } AssemblyFactory.SaveAssembly (outputAssembly, OutputPath); }