public void Write() { FileStream out_stream = null; try { if (ThisModule == null) { this_module = new Module(Path.GetFileName(output_file)); } out_stream = new FileStream(output_file, FileMode.Create, FileAccess.Write); pefile = new PEFile(ThisAssembly != null ? ThisAssembly.Name : null, ThisModule.Name, is_dll, ThisAssembly != null, null, out_stream); PEAPI.Assembly asmb = pefile.GetThisAssembly(); ThisModule.PeapiModule = pefile.GetThisModule(); if (file_ref != null) { file_ref.Resolve(this); } extern_table.Resolve(this); type_manager.DefineAll(); if (manifestResources != null) { foreach (ManifestResource mr in manifestResources) { pefile.AddManifestResource(mr); } } foreach (FieldDef fielddef in global_field_table.Values) { fielddef.Define(this); } foreach (MethodDef methoddef in global_method_table.Values) { methoddef.Define(this); } foreach (TypeDef typedef in defcont_list) { typedef.DefineContents(this); } if (ThisAssembly != null) { ThisAssembly.Resolve(this, pefile.GetThisAssembly()); } ThisModule.Resolve(this, pefile.GetThisModule()); if (sub_system != -1) { pefile.SetSubSystem((PEAPI.SubSystem)sub_system); } if (cor_flags != -1) { pefile.SetCorFlags(cor_flags); } if (stack_reserve != -1) { pefile.SetStackReserve(stack_reserve); } pefile.WritePEFile(); if (symwriter != null) { Guid guid = pefile.GetThisModule().Guid; symwriter.Write(guid); } } finally { if (out_stream != null) { out_stream.Close(); } } }