Пример #1
0
        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));
        }
Пример #2
0
        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);
        }