/// <summary> /// Resolves an individual dependency for a given nodes and sets the nodes's edge to that dependency. /// </summary> /// <param name="node">The nodes to resolve the dependency for.</param> /// <param name="allNodesDict">List of all nodes.</param> /// <param name="result">The result of this dependency search.</param> private void ResolveDependency(Node <FrameworkOptionsTuple> node, Dictionary <string, List <Node <FrameworkOptionsTuple> > > allNodesDict, DependencySearchResult <FrameworkOptionsTuple, Framework> result) { // Framework has no config file, i.e. Microsoft.NETCore.App if (node.Element.Options == null) { return; } var rollForwardPolicy = node.Element.Options.RollForward; var frameworks = node.Element.Options.GetAllFrameworks(); foreach (var dependency in frameworks) { var policy = RollForwardPolicy.GetPolicy(rollForwardPolicy); // Get all candidate dependencies. var candidates = new List <Node <FrameworkOptionsTuple> >(allNodesDict.Count); var versions = new List <NuGetVersion>(allNodesDict.Count); if (allNodesDict.TryGetValue(dependency.Name, out var dependencies)) { candidates.AddRange(dependencies); versions.AddRange(dependencies.Select(x => x.Element.Framework.NuGetVersion)); } if (RollForwardPolicy.TryGetSupportedVersion(policy, dependency.NuGetVersion, versions, out var supportedVersion)) { var edge = candidates.First(x => x.Element.Framework.Version == supportedVersion.ToString()); node.Edges.Add(edge); result.Dependencies.Add(edge.Element); } else { result.MissingDependencies.Add(dependency); } } }
public RuntimeOptions(string tfm, List <Framework> frameworks, RollForwardPolicy rollForward) { Tfm = tfm; Frameworks = frameworks; RollForward = rollForward; }
public RuntimeOptions(string tfm, Framework framework, RollForwardPolicy rollForward) { Tfm = tfm; Framework = framework; RollForward = rollForward; }