public ModuleData(AssemblyIdentity identity, OutputKind kind, ImmutableArray<byte> image, ImmutableArray<byte> pdb, bool inMemoryModule) { this.Id = new ModuleDataId(identity.Name, identity.GetDisplayName(), GetMvid(image)); this.Kind = kind; this.Image = image; this.Pdb = pdb; this.InMemoryModule = inMemoryModule; }
PEAssemblySymbol CreateAssemblyFromIdentity(MetadataReferenceResolver resolver, AssemblyIdentity identity, string basePath, List<PEModuleSymbol> modules) { PEAssemblySymbol ass; if (!_assembliesMap.TryGetValue(identity, out ass)) { // temporary: lookup ignoring minor version number foreach (var pair in _assembliesMap) { if (pair.Key.Name.Equals(identity.Name, StringComparison.OrdinalIgnoreCase) && pair.Key.Version.Major == identity.Version.Major) { _assembliesMap[identity] = pair.Value; return pair.Value; } } // string keytoken = string.Join("", identity.PublicKeyToken.Select(b => b.ToString("x2"))); var pes = resolver.ResolveReference(identity.Name + ".dll", basePath, MetadataReferenceProperties.Assembly) .Concat(resolver.ResolveReference($"{identity.Name}/v4.0_{identity.Version}__{keytoken}/{identity.Name}.dll", basePath, MetadataReferenceProperties.Assembly)); var pe = pes.FirstOrDefault(); if (pe != null) { _assembliesMap[identity] = ass = PEAssemblySymbol.Create(pe); ass.SetCorLibrary(_lazyCorLibrary); modules.AddRange(ass.Modules.Cast<PEModuleSymbol>()); } else { throw new DllNotFoundException(identity.GetDisplayName()); } } return ass; }
public ModuleData(AssemblyIdentity identity, OutputKind kind, ImmutableArray<byte> image, ImmutableArray<byte> pdb, bool inMemoryModule) { this.FullName = identity.GetDisplayName(); this.Kind = kind; this.Image = image; this.PDB = pdb; this.InMemoryModule = inMemoryModule; }
public override Assembly Load(AssemblyIdentity identity, string location = null) { return _manager.GetAssembly(identity.GetDisplayName(), reflectionOnly: false); }