public AssemblyResolver(IEnumerable <string> referencedAssemblies, MessageLogger logger) { if (referencedAssemblies == null) { throw new ArgumentNullException("referencedAssemblies"); } if (logger == null) { throw new ArgumentNullException("logger"); } this.logger = logger; foreach (var file in referencedAssemblies) { var name = Path.GetFileNameWithoutExtension(file); if (name != null && File.Exists(file)) { assemblyFiles.Add(name, file); } else { logger.Write(MessageCode.WarningReferencedAssemblyFileIsNotFound, file); } } this.defaultAssemblyResolver = new DefaultAssemblyResolver(); }
private AssemblyDefinition ResolveInternal(AssemblyNameReference name) { var shortName = name.Name; ModuleDefinition module; if (!loadedAssemblies.TryGetValue(shortName, out module)) { string file; if (!TryGetAssemblyFile(shortName, out file)) { AssemblyDefinition resolvedAssembly; try { resolvedAssembly = defaultAssemblyResolver.Resolve(name); } catch (Exception) { resolvedAssembly = null; } if (resolvedAssembly == null) { logger.Write(MessageCode.ErrorUnableToFindReferencedAssembly, shortName); throw new StageFailedException(); } return(resolvedAssembly); } module = LoadAssembly(file); loadedAssemblies.Add(shortName, module); } return(module.Assembly); }