public static bool TryGetPackageByName(this INuGetReferences references, string packageName, [MaybeNullWhen(false)] out NuGetReference nugetReference) { if (references is null) { throw new ArgumentNullException(nameof(references)); } var matches = references.PackageReferences.Where(p => p.Name.Equals(packageName, StringComparison.OrdinalIgnoreCase)).OrderByDescending(p => Version.Parse(p.Version)); nugetReference = matches.FirstOrDefault(); return(nugetReference is not null); }
public DependencyAnalysisState(IProject project, INuGetReferences nugetReferences, IReadOnlyCollection <TargetFrameworkMoniker> targetFrameworks) { if (project is null) { throw new ArgumentNullException(nameof(project)); } if (nugetReferences is null) { throw new ArgumentNullException(nameof(nugetReferences)); } FrameworkReferences = new DependencyCollection <Reference>(initial: project.FrameworkReferences, setRisk: SetRisk); Packages = new DependencyCollection <NuGetReference>(initial: nugetReferences.PackageReferences, setRisk: SetRisk); References = new DependencyCollection <Reference>(project.References, SetRisk); IsValid = true; TargetFrameworks = targetFrameworks; void SetRisk(BuildBreakRisk risk) { Risk = (BuildBreakRisk)Math.Max((int)Risk, (int)risk); } }