public void IncludeDependencies(ScriptCollection configuredScripts) { HashSet <string> referenceSet = new HashSet <string>(); Queue <string> dependencies = new Queue <string>(); foreach (ScriptReference reference in _references) { referenceSet.Add(reference.Name); if (reference.Dependencies != null) { foreach (string dependency in reference.Dependencies) { dependencies.Enqueue(dependency); } } } if (_scriptBlocks != null) { foreach (ScriptBlock scriptBlock in _scriptBlocks) { if (scriptBlock.Dependencies != null) { foreach (string dependency in scriptBlock.Dependencies) { dependencies.Enqueue(dependency); } } } } while (dependencies.Count != 0) { string name = dependencies.Dequeue(); if (referenceSet.Contains(name)) { continue; } ScriptElement scriptElement = configuredScripts.GetElement(name, _scriptFlavor); string[] implicitDependencies = scriptElement.GetDependencyList(); ScriptReference scriptReference = new ScriptReference(name, scriptElement.Url, ScriptMode.OnDemand, implicitDependencies, scriptElement.Version); AddScriptReference(scriptReference); referenceSet.Add(name); if (implicitDependencies != null) { foreach (string implicitDependency in implicitDependencies) { if (referenceSet.Contains(implicitDependency) == false) { dependencies.Enqueue(implicitDependency); } } } } }