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