// left more recent: 1 // identicals: 0 // right more recent: -1 public static int CompareVersion(VersionData left, VersionData right) { if (left.IsValidSemver != right.IsValidSemver) { return(left.IsValidSemver ? 1 : -1); } int compareLength = left.Length > right.Length ? left.Length : right.Length; for (int i = 0; i < compareLength; ++i) { int leftNumber = left.GetIndex(i); int rightNumber = right.GetIndex(i); if (leftNumber > rightNumber) { return(1); } if (leftNumber < rightNumber) { return(-1); } } return(0); }