public IList<Dependency> MergeAndResolveDependencies(Solution soln, Project proj) { try { var wishes = new List<Wish>(); wishes.AddRange(soln.GetAllWishes()); wishes.AddRange(proj.GetAllWishes()); if (Log.IsTraceEnabled()) { Log.Trace("merged wishes=\n" + String.Join("\n",wishes)); } ValidateAll(wishes); //now the fun begins. Resolve transitive deps, find closest versions //TODO:resolve for all but pick only what the current project needs //TODO:keep the calculated cache for how long? how to decide when to recalc all? var resolver = new WishDependencyResolver(DepsCache); var deps = resolver.Resolve(wishes); var projWishes = proj.GetAllWishes(); //TODO:now line up with deps? to get copy to and additional info added? return deps; } catch (Exception e) { throw new ResolverException("Error trying to resolve dependencies for project " + proj + " and solution " + soln, e); } }