private void AddAssemblyReferences(Project project, string referenceFolder) { if (Mode == "IKVM") { project.AddAssemblyReference(referenceFolder + Path.DirectorySeparatorChar + "IKVM.GNU.Classpath.dll"); } IDictionary references = options.GetKeys("References"); UsingVisitor uv = new UsingVisitor(); foreach (Source source in Sources.Values) { if (source.CodeFile && source.OutputFile.StartsWith(project.OutputFolder)) { uv.VisitCompilationUnit(source.CompilationUnit, null); } } IList added = new ArrayList(); foreach (string key in uv.Usings.Keys) { foreach (DictionaryEntry entry in references) { if (key.StartsWith(entry.Key.ToString())) { string[] assemblies = entry.Value.ToString().Split(','); foreach (string assembly in assemblies) { if (added.Contains(assembly)) { continue; } project.AddAssemblyReference(referenceFolder + Path.DirectorySeparatorChar + assembly + ".dll"); added.Add(assembly); } } } } }
private void ReadMapFiles(string directory, string baseFolder) { foreach (string mappingFile in Directory.GetFiles(directory, "*.map")) { string fileName = Path.GetFileName(mappingFile); if (fileName == "Class.map") { KeyValuePairReader classMapReader = new KeyValuePairReader(mappingFile); string package = mappingFile.Substring(baseFolder.Length + 1); package = Path.GetDirectoryName(package); package = package.Replace('\\', '.'); foreach (DictionaryEntry entry in classMapReader.GetKeys()) { string key = (string)entry.Key; if (!key.StartsWith(package + ".")) { key = package + "." + key; } TypeMapping typeMapping = new TypeMapping(); typeMapping.Target = entry.Value.ToString(); Add(key, typeMapping); } } else { string mappingFileName = GetMappedType(mappingFile, baseFolder); TypeMapping typeMapping = AddClassMapping(mappingFileName); KeyValuePairReader mappingReader = new KeyValuePairReader(mappingFile); if (typeMapping.Members == null) { typeMapping.Members = new MembersMapping(); } foreach (DictionaryEntry entry in mappingReader.GetKeys()) { string key = (string)entry.Key; string value = (string)entry.Value; if (key == "PascalStyle") { AddPascalStyleMembers(typeMapping, value); } else { typeMapping.Members.Add(key, value); } } } } }