我正在做一个与TFS自动化有关的不太疯狂的项目。 最近,我讨论了检查版本号(主要,次要,HF,内部版本)是否最有效的方法,以及什么是最有效的方法-VersionToCheck已在SourceVersion和TargetVersion之间发布。
结果,我们完成了非常疯狂的算法:
电视-目标版本
if(c1.Major> = sv.Major和<= tv.Major) { // ...检查小零件和其余零件 }其他 { 返回false; }
因此,我们应该在这两个内部版本之间得到正确/错误的内部版本号。更难的是,我们没有像0001.0002.0003这样的重复数字,因此替换和比较两个整数将不起作用:)
任何提示都值得赞赏。
确定得更清楚。 例如我想检查版本1.0.44.4736是否在版本之间 1.0.44.11和1.1.0.5。
答案 0 :(得分:5)
最简单的方法是使用Version
类-别人已经为您编写了逻辑。
var c1 = new Version(major, minor, build, revision);
var sv = new Version(major, minor, build, revision);
var tv = new Version(major, minor, build, revision);
if (c1 >= sv && c1 <= tv) ....
举一个具体的例子
确定得更清楚。例如,我想检查版本1.0.44.4736是否在版本1.0.44.11和1.1.0.5之间。
var c1 = new Version(1, 0, 44, 4736);
var sv = new Version(1, 0, 44, 11);
var tv = new Version(1, 1, 0, 5);
if (c1 >= sv && c1 <= tv)
{
Console.WriteLine(c1 + " is between " + sv + " and " + tv);
}
如果您真的想要自己实现此目的...
public static int Compare(Version x, Version y)
{
int result = x.Major.CompareTo(y.Major);
if (result != 0)
return result;
result = x.Minor.CompareTo(y.Minor);
if (result != 0)
return result;
result = x.Build.CompareTo(y.Build);
if (result != 0)
return result;
result = x.Revision.CompareTo(y.Revision);
return result;
}
然后
if (Compare(c1, sv) >= 0 && Compare(c1, tv) <= 0) ...