public override void VisitAssemblyDefinition(AssemblyDefinition asm) { if (asm.Kind != AssemblyKind.Dll && asm.EntryPoint == null) { throw new ReflectionException("Assembly does not have an entry point defined"); } if ((asm.MainModule.Image.CLIHeader.Flags & RuntimeImage.ILOnly) == 0) { throw new NotImplementedException("Can not write a mixed mode assembly"); } foreach (ModuleDefinition module in asm.Modules) { if (module.Image.CLIHeader.Metadata.VirtualAddress != RVA.Zero) { ResetImage(module); } } ReflectionWriter rw = asm.MainModule.Controller.Writer; rw.StructureWriter = this; m_mdWriter = rw.MetadataWriter; m_tableWriter = rw.MetadataTableWriter; m_rowWriter = rw.MetadataRowWriter; }
public override void VisitAssemblyDefinition(AssemblyDefinition asm) { if (asm.Kind != AssemblyKind.Dll && asm.EntryPoint == null) { throw new ReflectionException("Assembly does not have an entry point defined"); } if ((asm.MainModule.Image.CLIHeader.Flags & RuntimeImage.ILOnly) == 0) { throw new NotSupportedException("Can not write a mixed mode assembly"); } foreach (ModuleDefinition module in asm.Modules) { if (module.Image.CLIHeader.Metadata.VirtualAddress != RVA.Zero) { ResetImage(module); } } asm.MetadataToken = new MetadataToken(TokenType.Assembly, 1); ReflectionWriter rw = asm.MainModule.Controller.Writer; rw.StructureWriter = this; m_mdWriter = rw.MetadataWriter; m_tableWriter = rw.MetadataTableWriter; m_rowWriter = rw.MetadataRowWriter; if (!rw.SaveSymbols) { return; } FileStream fs = m_binaryWriter.BaseStream as FileStream; if (fs != null) { rw.OutputFile = fs.Name; } }