public override void VisitAssemblyLinkedResource(AssemblyLinkedResource res) { MetadataToken impl = new MetadataToken(TokenType.AssemblyRef, (uint)m_asm.MainModule.AssemblyReferences.IndexOf(res.Assembly) + 1); AddManifestResource(0, res.Name, res.Flags, impl); }
public override void VisitResourceCollection(ResourceCollection resources) { if (!m_tHeap.HasTable(ManifestResourceTable.RId)) { return; } ManifestResourceTable mrTable = m_tableReader.GetManifestResourceTable(); FileTable fTable = m_tableReader.GetFileTable(); for (int i = 0; i < mrTable.Rows.Count; i++) { ManifestResourceRow mrRow = mrTable [i]; if (mrRow.Implementation.RID == 0) { EmbeddedResource eres = new EmbeddedResource( ReadString(mrRow.Name), mrRow.Flags); BinaryReader br = m_ir.MetadataReader.GetDataReader( m_img.CLIHeader.Resources.VirtualAddress); br.BaseStream.Position += mrRow.Offset; eres.Data = br.ReadBytes(br.ReadInt32()); resources.Add(eres); continue; } switch (mrRow.Implementation.TokenType) { case TokenType.File: FileRow fRow = fTable [(int)mrRow.Implementation.RID - 1]; LinkedResource lres = new LinkedResource( ReadString(mrRow.Name), mrRow.Flags, ReadString(fRow.Name)); lres.Hash = ReadBlob(fRow.HashValue); resources.Add(lres); break; case TokenType.AssemblyRef: AssemblyNameReference asm = m_module.AssemblyReferences [(int)mrRow.Implementation.RID - 1]; AssemblyLinkedResource alr = new AssemblyLinkedResource( ReadString(mrRow.Name), mrRow.Flags, asm); resources.Add(alr); break; } } }
public virtual void VisitAssemblyLinkedResource(AssemblyLinkedResource res) { }