public int CompareTo(PackageVersion o)
{
var pv = o as PackageVersion;
if (pv == null) return -1;
var result = 0;
if (pv._parts.Length > _parts.Length)
return -pv.CompareTo(this);
for (var i = 0; i < _parts.Length; i++)
{
if (pv._parts.Length < i + 1)
{
result = Compare(_parts[i], "0");
}
else
{
result = Compare(_parts[i], pv._parts[i]);
}
if (result != 0)
return result;
}
return result;
}