private Version ParseVersion(string versionString)
{
var match = Regex.Match(versionString, @"^(?<major>\d+)\.(?<minor>\d+)\.(?<build>\d+)(\.(?<revision>\d+))?(-.*)?$");
if (match.Success)
{
var majorString = match.Groups["major"].Value;
var minorString = match.Groups["minor"].Value;
var buildString = match.Groups["build"].Value;
var revisionString = match.Groups["revision"].Value;
if (revisionString == "") { revisionString = "0"; }
int major, minor, build, revision;
if (int.TryParse(majorString, out major) &&
int.TryParse(minorString, out minor) &&
int.TryParse(buildString, out build) &&
int.TryParse(revisionString, out revision))
{
return new Version(major, minor, build, revision);
}
}
return new Version(0, 0, 0, 0);
}