public bool Equals(PackageSpec other) { if (other == null) { return(false); } if (ReferenceEquals(this, other)) { return(true); } // Name and FilePath are not used for comparison since they are not serialized to JSON. return(Title == other.Title && EqualityUtility.EqualsWithNullCheck(Version, other.Version) && IsDefaultVersion == other.IsDefaultVersion && HasVersionSnapshot == other.HasVersionSnapshot && Description == other.Description && Summary == other.Summary && ReleaseNotes == other.ReleaseNotes && EqualityUtility.SequenceEqualWithNullCheck(Authors, other.Authors) && EqualityUtility.SequenceEqualWithNullCheck(Owners, other.Owners) && ProjectUrl == other.ProjectUrl && IconUrl == other.IconUrl && LicenseUrl == other.LicenseUrl && RequireLicenseAcceptance == other.RequireLicenseAcceptance && Copyright == other.Copyright && Language == other.Language && EqualityUtility.EqualsWithNullCheck(BuildOptions, other.BuildOptions) && EqualityUtility.SequenceEqualWithNullCheck(Tags, other.Tags) && EqualityUtility.SequenceEqualWithNullCheck(ContentFiles, other.ContentFiles) && EqualityUtility.SequenceEqualWithNullCheck(Dependencies, other.Dependencies) && EqualityUtility.DictionaryOfSequenceEquals(Scripts, other.Scripts) && EqualityUtility.DictionaryEquals(PackInclude, other.PackInclude, (s, o) => StringComparer.Ordinal.Equals(s, o)) && EqualityUtility.EqualsWithNullCheck(PackOptions, other.PackOptions) && EqualityUtility.SequenceEqualWithNullCheck(TargetFrameworks, other.TargetFrameworks) && EqualityUtility.EqualsWithNullCheck(RuntimeGraph, other.RuntimeGraph) && EqualityUtility.EqualsWithNullCheck(RestoreMetadata, other.RestoreMetadata)); }