public virtual void SaveModule(Module module, CompilerParameters options, CompilerResults results){ if (module == null || options == null || results == null){Debug.Assert(false); return;} AssemblyReferenceList arefs = module.AssemblyReferences; //TODO: give the error in the context of the member that made the reference for (int i = 0, n = arefs == null ? 0 : arefs.Count; i < n; i++){ AssemblyReference aref = arefs[i]; if (aref == null || aref.Assembly == null) continue; ArrayList metadataErrors = aref.Assembly.MetadataImportErrors; if (metadataErrors == null) continue; foreach (Exception mdErr in metadataErrors) if (mdErr.Message.StartsWith("Assembly reference not resolved")) results.Errors.Add(new CompilerError(aref.Assembly.Name+".dll", 0, 0, "0", mdErr.Message)); } if (results.NativeCompilerReturnValue != 0) return; //TODO: allow option to override this ErrorNodeList errors = new ErrorNodeList(0); string fileName = this.GetTargetFileName(options, errors); this.AddResourcesAndIcons(module, options, errors); if (errors.Count == 0){ module.WriteModule(fileName, options); CompilerOptions coptions = options as CompilerOptions; if (coptions != null && coptions.XMLDocFileName != null && coptions.XMLDocFileName.Length > 0) module.WriteDocumentation(new StreamWriter(coptions.XMLDocFileName)); results.PathToAssembly = fileName; }else{ this.ProcessErrors(options, results, errors); } }