public static void Main()
Console.WriteLine(IsNewerThanCurrentVersion("1.0.5"));
Console.WriteLine(IsNewerThanCurrentVersion("1.0.5-DEV"));
public static bool IsNewerThanCurrentVersion(string newestVersion)
var currentVersion = "1.0.5-DEV";
if (currentVersion == newestVersion)
var currentVersionNumbers = GetNumericVersionPart(currentVersion);
var newestVersionNumbers = GetNumericVersionPart(newestVersion);
if (currentVersionNumbers.Length != newestVersionNumbers.Length)
throw new SystemException("Versions do not match.");
return currentVersionNumbers.Where((currentVersionNumber, i) => int.Parse(newestVersionNumbers[i]) > int.Parse(currentVersionNumber)).Any();
private static string[] GetNumericVersionPart(string version)
var firstHyphenPosition = version.IndexOf("-", StringComparison.OrdinalIgnoreCase);
var numericPart = firstHyphenPosition == -1 ? version : version.Substring(0, firstHyphenPosition);
return numericPart.Split('.');