internal AssemblyDefinition(AssemblyNameDefinition name) { if (name == null) { throw new ArgumentNullException("name"); } m_asmName = name; m_modules = new ModuleDefinitionCollection(this); m_resolver = new DefaultAssemblyResolver(); }
public override void VisitModuleDefinitionCollection(ModuleDefinitionCollection modules) { VisitCollection(modules); }
public override void VisitModuleDefinitionCollection(ModuleDefinitionCollection modules) { ModuleTable mt = m_tableReader.GetModuleTable(); if (mt == null || mt.Rows.Count != 1) { throw new ReflectionException("Can not read main module"); } ModuleRow mr = mt [0]; string name = ReadString(mr.Name); ModuleDefinition main = new ModuleDefinition(name, m_asmDef, this, true); main.Mvid = m_streams.GuidHeap [mr.Mvid]; main.MetadataToken = new MetadataToken(TokenType.Module, 1); modules.Add(main); m_module = main; m_module.Accept(this); FileTable ftable = m_tableReader.GetFileTable(); if (ftable == null || ftable.Rows.Count == 0) { return; } foreach (FileRow frow in ftable.Rows) { if (frow.Flags != FileAttributes.ContainsMetaData) { continue; } name = ReadString(frow.Name); FileInfo location = new FileInfo( m_img.FileInformation != null ? Path.Combine(m_img.FileInformation.DirectoryName, name) : name); if (!File.Exists(location.FullName)) { throw new FileNotFoundException("Module not found : " + name); } try { ImageReader module = ImageReader.Read(location.FullName); mt = module.Image.MetadataRoot.Streams.TablesHeap [ModuleTable.RId] as ModuleTable; if (mt == null || mt.Rows.Count != 1) { throw new ReflectionException("Can not read module : " + name); } mr = mt [0]; ModuleDefinition modext = new ModuleDefinition(name, m_asmDef, new StructureReader(module, m_manifestOnly), false); modext.Mvid = module.Image.MetadataRoot.Streams.GuidHeap [mr.Mvid]; modules.Add(modext); modext.Accept(this); } catch (ReflectionException) { throw; } catch (Exception e) { throw new ReflectionException("Can not read module : " + name, e); } } }
public virtual void VisitModuleDefinitionCollection(ModuleDefinitionCollection modules) { }