Почему System.Version в .NET определяется как Major.minor.build.ruision?
-
29-09-2019 - |
Вопрос
Почему System.Version в .NET определяется как Major.minor.build.ruision? Почти все (включая меня), кажется, согласны с тем, что ревизия принадлежит на третьем месте, и «строить» или то, что вы хотели бы назвать, принадлежит последнему.
Microsoft даже использует цифры этим случайным образом, например, 3.5.3858.2, или сами имена - это только назад? Например, если бы вы писали свой собственный класс версий с помощью Order Major.minor.build.Revision, было бы уместно поменять два последних компонента при преобразовании в систему. Версия, или вы игнорируете его и просто притворяетесь именами отсталые?
Решение
Я думаю, что путаница приходит то, что больше всего считает «ревизию» и Что делает Microsoft:
Строить: Разница в номере сборки представляет собой перекомпиляцию того же источника. Это было бы уместно из -за изменений процессора, платформы или компилятора.
Пересмотр: Собрание с тем же именем, основными и незначительными номерами версий, но различные изменения предназначены для того, чтобы быть полностью взаимозаменяемыми. Это было бы целесообразно исправить дыру в безопасности в ранее выпущенной сборке.
Угол исправления безопасности, вероятно, гораздо более распространенный для них, кажется приличной причиной, чтобы иметь его на последнем месте, как «самый минорный» изменение.
Другие советы
Я понимаю, что я приезжаю на вечеринку немного поздно, но я хотел поделиться своим поминовением, почему порядок сборки и ревизии «неправильно». Это не так много, что они в неправильный заказ, но они не в Любые порядок.
Версия сборки, когда она доходит до него, является мажорным. Минор. От вышеупомянутого связь, Microsoft говорит: «Последующие версии сборки, которые отличаются только номерами сборки или ревизии, считаются обновлениями исправления предыдущих версия. [Мой акцент
То Строить представляет перекомпиляцию того же источника. То Редакция представляет собой изменение кода, но одно, которое полностью взаимозаменяемо с другими пересмотрами одной и той же версии [major.minor]. Но ни один из них не имеет приоритета над другим.
Итак, в резюме, не думай об этом как:
+ Major
|
+-+ Minor
|
+-+ Build
|
+-+ Revision
Но вместо:
+ Major
|
+-+ Minor
|
+-+ Build
|
+-+ Revision
Может ли Microsoft даже использовать номера в этой случайной опасности, например, 3.5.3858.2
Если вы позволите ему по умолчанию, например, указав [assembly: AssemblyVersion("1.1.*")]
, затем третье число увеличивается каждый день, а четвертое число - это количество секунд с полуночи, разделенное на два (чтобы удвоить, если за один день строится более одного строительства).
Почти все (включая меня), кажется, согласны с тем, что ревизия принадлежит на третьем месте, и «строить» или то, что вы хотели бы назвать, принадлежит последнему.
Microsoft, кажется, использует «сборку» в качестве синонима «дня»: возможно, это связано с идеей «ежедневных сборки»; и, следовательно, «пересмотр» является еще одной версией (ежедневной) сборки.
Поздний ответ, но я чувствую, что другие ответы могут быть немного расширены.
Термины «сборка» и «пересмотр» - это просто терминология Microsoft. Класс System.version каким -либо образом не заботится о том, как вы их назначаете.
Что касается переключения порядка деталей в соответствии с вашей собственной терминологией, я бы сказал, что вы должны в основном игнорировать слова полностью, и вместо этого рассмотреть, что такое система. В самом деле Определяет:
Формат строки, который он может проанализировать и генерировать:
major.minor[.build[.revision]]
Это означает, что если вы привыкли иметь свою собственную версию, отформатированную как xyzw, то вам следует создавать класс версий таким образом:
new Version(x, y, z, w)
Любой другой заказ параметра не будет соответствовать тому, в каком разборе () и TOSTRING () будет делать. Если вы переключите Z и W, то TOSTRING () выводится XYWZ, который будет запутаться для всех, если вы ожидаете XYZW
А. Сравнение версий и порядок сортировки, в результате чего версии сортируются сначала по Major, затем Minor, затем постройте, затем пересмотр, как и ожидали большинство из нас. То есть 1.2.5 позже 1.2.3.7.
Поэтому, если вы создаете строку своей версии как 1.2.6.4 и хотите, чтобы она считалась новой, чем 1.2.5.8, не переключайте порядок деталей в конструкторе версии.
Короче говоря, в то время как слова Major/Minor/Build/Revision могут дать подсказку относительно того, какое число должно быть увеличено, учитывая количество изменений, терминология оказывает очень мало влияния на то, как на самом деле используется класс. Форматирование и сортировка - это то, что имеет значение.