Bari.Plugins.VsCore.Build.OptimizingBuildContextFactory.ReplaceWithInSolutionReference C# (CSharp) Method

ReplaceWithInSolutionReference() private method

private ReplaceWithInSolutionReference ( ISet graph, IEnumerable childProjectBuilders, SuiteReferenceBuilder dep ) : void
graph ISet
childProjectBuilders IEnumerable
dep SuiteReferenceBuilder
return void
        void ReplaceWithInSolutionReference(ISet<EquatableEdge<IBuilder>> graph, IEnumerable<ISlnProjectBuilder> childProjectBuilders, SuiteReferenceBuilder dep)
        {
            var inSolutionRef = inSolutionReferenceBuilderFactory.CreateInSolutionReferenceBuilder(dep.ReferencedProject);
            inSolutionRef.Reference = dep.Reference;

            foreach (var builder in childProjectBuilders)
            {
                builder.RemovePrerequisite(dep);

                var edgesToModify = new HashSet<EquatableEdge<IBuilder>>(graph.Where(edge => edge.Source == builder && edge.Target == dep));
                RemoveEdges(graph, edgesToModify);

                foreach (var edge in edgesToModify)
                {
                    var newEdge = new EquatableEdge<IBuilder>(edge.Source, inSolutionRef);
                    AddEdge(graph, newEdge);
                }
            }
        }