如何检查版本号是否为两个版本号之间的版本

时间:2019-04-02 11:48:03

标签: c# tfs

我正在做一个与TFS自动化有关的不太疯狂的项目。 最近,我讨论了检查版本号(主要,次要,HF,内部版本)是否最有效的方法,以及什么是最有效的方法-VersionToCheck已在SourceVersion和TargetVersion之间发布。

结果,我们完成了非常疯狂的算法:

  • cv-要检查的版本
  • sv-源版本
  • 电视-目标版本

    if(c1.Major> = sv.Major和<= tv.Major)   {   // ...检查小零件和其余零件   }其他   {   返回false;   }

因此,我们应该在这两个内部版本之间得到正确/错误的内部版本号。更难的是,我们没有像0001.0002.0003这样的重复数字,因此替换和比较两个整数将不起作用:)

任何提示都值得赞赏。

确定得更清楚。 例如我想检查版本1.0.44.4736是否在版本之间 1.0.44.11和1.1.0.5。

1 个答案:

答案 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); 
}

Run it here


如果您真的想要自己实现此目的...

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) ...