public bool Equals(LockFile other) { if (other == null) { return(false); } if (Object.ReferenceEquals(this, other)) { return(true); } return(Version == other.Version && ProjectFileDependencyGroups.OrderedEquals(other.ProjectFileDependencyGroups, group => group.FrameworkName, StringComparer.OrdinalIgnoreCase) && Libraries.OrderedEquals(other.Libraries, library => library.Name, StringComparer.OrdinalIgnoreCase) && Targets.OrderedEquals(other.Targets, target => target.Name, StringComparer.Ordinal) && ProjectFileToolGroups.OrderedEquals(other.ProjectFileToolGroups, group => group.FrameworkName, StringComparer.OrdinalIgnoreCase) && Tools.OrderedEquals(other.Tools, target => target.Name, StringComparer.Ordinal) && PackageFolders.SequenceEqual <LockFileItem>(other.PackageFolders)); }
private bool ValidateTools(PackageSpec spec) { // Skip this check if there are no tools at all. if (ProjectFileToolGroups.Count == 0 && spec.Tools.Count == 0) { return(true); } // The lock file should only contain tools for a single framework if (ProjectFileToolGroups.Count != 1) { return(false); } var group = ProjectFileToolGroups.First(); if (!StringComparer.OrdinalIgnoreCase.Equals( group.FrameworkName, ToolFramework.ToString())) { return(false); } var lockDependencies = group .Dependencies .OrderBy(x => x, StringComparer.Ordinal); var specDependencies = spec.Tools .Select(x => x.LibraryRange.ToLockFileDependencyGroupString()) .OrderBy(x => x, StringComparer.Ordinal); if (!specDependencies.SequenceEqual(lockDependencies)) { return(false); } return(true); }