public FileDetail IndexFile(string file, IFileHelper helper) { var content = System.IO.File.ReadAllText(file); var baseUri = System.IO.Path.GetDirectoryName(file).ToUri(); var dependencies = helper == null ? new Uri[0] : helper.FindDepenencies(content) .Select(x => x.ToUri(x.StartsWith("/") ? BaseUri : baseUri)) .Where(x => x != null && x.IsFile) .ToArray(); var detail = _Files.GetOrAdd(file, _ => new FileDetail(_, helper)); detail.Dependencies.Clear(); foreach (var dep in dependencies) { var sdep = dep.LocalPath; var hdep = FindHelper(sdep); var depDetail = _Files.GetOrAdd(sdep, _ => new FileDetail(_, hdep)); detail.Dependencies.SafeAdd(sdep); } return detail; }