public override int GetHashCode() { var hashCode = new HashCodeCombiner(); hashCode.AddStruct(ProjectStyle); StringComparer osStringComparer = PathUtility.GetStringComparerBasedOnOS(); if (ProjectPath != null) { hashCode.AddObject(osStringComparer.GetHashCode(ProjectPath)); } if (ProjectJsonPath != null) { hashCode.AddObject(osStringComparer.GetHashCode(ProjectJsonPath)); } if (OutputPath != null) { hashCode.AddObject(osStringComparer.GetHashCode(OutputPath)); } if (ProjectName != null) { hashCode.AddObject(osStringComparer.GetHashCode(ProjectName)); } if (ProjectUniqueName != null) { hashCode.AddObject(osStringComparer.GetHashCode(ProjectUniqueName)); } hashCode.AddSequence(Sources.OrderBy(e => e.Source, StringComparer.OrdinalIgnoreCase)); if (PackagesPath != null) { hashCode.AddObject(osStringComparer.GetHashCode(PackagesPath)); } foreach (var reference in ConfigFilePaths.OrderBy(s => s, osStringComparer)) { hashCode.AddObject(osStringComparer.GetHashCode(reference)); } foreach (var reference in FallbackFolders.OrderBy(s => s, osStringComparer)) { hashCode.AddObject(osStringComparer.GetHashCode(reference)); } hashCode.AddSequence(TargetFrameworks.OrderBy(dep => dep.TargetAlias, StringComparer.OrdinalIgnoreCase)); foreach (var reference in OriginalTargetFrameworks.OrderBy(s => s, StringComparer.OrdinalIgnoreCase)) { hashCode.AddObject(StringComparer.OrdinalIgnoreCase.GetHashCode(reference)); } hashCode.AddObject(CrossTargeting); hashCode.AddObject(LegacyPackagesDirectory); hashCode.AddSequence(Files); hashCode.AddObject(ValidateRuntimeAssets); hashCode.AddObject(SkipContentFileWrite); hashCode.AddObject(ProjectWideWarningProperties); hashCode.AddObject(RestoreLockProperties); hashCode.AddObject(CentralPackageVersionsEnabled); hashCode.AddObject(CentralPackageVersionOverrideDisabled); hashCode.AddObject(CentralPackageTransitivePinningEnabled); return(hashCode.CombinedHash); }