Как проверить, является ли номер версии версией между двумя номерами версий - PullRequest
0 голосов
/ 02 апреля 2019

Я занимаюсь не слишком сумасшедшим проектом, связанным с автоматизацией TFS. Недавно у меня была дискуссия о том, как и как наиболее эффективно проверить, был ли мой номер версии (Major, Minor, HF, Build) - VersionToCheck выпущен между версиями SourceVersion и TargetVersion.

В результате мы закончили с очень сумасшедшим сообщением:

  • cv - версия для проверки
  • sv - исходная версия
  • телевизор - целевая версия

    if (c1.Major> = sv.Major и <= tv.Major) { // ... проверка второстепенных и остальных частей } еще { вернуть ложь; } </p>

В результате мы должны получить значение true / false в номере сборки между этими двумя сборками. Чтобы усложнить задачу, у нас нет реплицированных чисел, таких как 0001.0002.0003, поэтому замена и сравнение двух целых не будет работать:)

Любые советы приветствуются.

Хорошо, чтобы было понятнее. Например я хочу проверить, если версия 1.0.44.4736 между версиями 1.0.44.11 и 1.1.0.5.

1 Ответ

5 голосов
/ 02 апреля 2019

Самый простой способ - использовать класс 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) ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...