void ResolveImportAssemblyReferences() { foreach (Boo.Lang.Compiler.Ast.Module module in CompileUnit.Modules) { ImportCollection imports = module.Imports; Import[] importArray = imports.ToArray(); for (int i = 0; i < importArray.Length; ++i) { Import u = importArray[i]; ReferenceExpression reference = u.AssemblyReference; if (null != reference) { try { Assembly asm = Parameters.FindAssembly(reference.Name); if (null == asm) { asm = Parameters.LoadAssembly(reference.Name); if (null != asm) { Parameters.AddAssembly(asm); } } reference.Entity = new TypeSystem.AssemblyReference(asm); } catch (Exception x) { Errors.Add(CompilerErrorFactory.UnableToLoadAssembly(reference, reference.Name, x)); imports.RemoveAt(i); } } } } }
private bool TryAutoAddAssemblyReference(Boo.Lang.Compiler.Ast.Import import) { Assembly asm = Parameters.FindAssembly(import.Namespace); if (asm != null) { return(false); //name resolution already failed earlier, don't try twice } asm = Parameters.LoadAssembly(import.Namespace, false); if (asm == null) { return(false); } if (asm != null) { try { NameResolutionService.OrganizeAssemblyTypes(asm); } catch (Exception /*ignored*/) { return(false); } Parameters.AddAssembly(asm); import.AssemblyReference = new ReferenceExpression(import.LexicalInfo, import.Namespace); import.AssemblyReference.Entity = new AssemblyReference(asm); return(true); } return(false); }