2010-06-23 1 views
59

Почему 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, или вы проигнорируете его и просто притворитесь именами назад?

+4

Это самый вдохновенный вопрос, который я видел сегодня ... Я всегда хотел знать это и никогда не думал просить! – codekaizen

ответ

30

Я думаю, что путаница приходит то, что многие считают «ревизии» и what Microsoft does:

  • Сложение: Разница в номер сборки представляет собой перекомпиляции одного и того же источника. Это было бы уместно из-за изменений в процессорах, платформах или компиляторах.

  • Редакция: Агрегаты с одинаковыми наименованиями, номерами старших и младших версий, но разными версиями, должны быть полностью взаимозаменяемыми. Это было бы уместно, чтобы исправить отверстие безопасности в ранее выпущенной сборке.

Угол затруднительной безопасности, вероятно, гораздо более общие для них, кажется, достойного повода, чтобы иметь его на последнем месте, как «наиболее незначительным» изменение.

+0

Это имеет смысл. Но с вашим собственным классом версии, используя order major.minor.revision.build, было бы целесообразно заменить последние два компонента при преобразовании в .NET 'System.Version'? Или оставить их в покое и позволить им называться противоположными именами в каждой структуре? –

+0

@ Jake - До каждого человека, делающего сборку, я полагаю ... лично я * делаю * обмениваю их, мое соглашение на самом деле является «Major.Minor.Revision.ChangeSet», поэтому я могу получить точный код, запускающий наш источник управления просто взглянув на номер. Поскольку мы выполняем непрерывную интеграцию, набор изменений и номер сборки, являющийся синонимом для нас, имеет смысл ... не уверен, что работает везде. –

13

Использует ли Microsoft даже номера в этом случайном порядке, например. 3.5.3858.2

Если вы укажете его по умолчанию, например. путем указания [assembly: AssemblyVersion("1.1.*")], , то третье число увеличивается каждый день, а четвертое число - это количество секунд с полуночи, разделенное на два (чтобы устранить неоднозначность, если в течение одного дня создано более одной сборки).

Почти все (включая меня), похоже, согласны с тем, что ревизия принадлежит к третьему месту, а «построить» или что бы вы хотели назвать, принадлежит последней.

Microsoft, похоже, использует «сборку» в качестве синонима «день»: возможно, это связано с идеей «ежедневных сборок»; и тогда «ревизия» является другой версией (ежедневной) сборки.

+0

Не совсем вопрос. Он не спрашивает, кто они, но почему они находятся в этом конкретном порядке. –

+0

@Alastair Pitts - Я добавил к своему ответу, чтобы попытаться это решить. – ChrisW

+0

Я поправил свой нижний план. :) –

22

Я понимаю, что я прихожу на вечеринку немного поздно, но я хотел поделиться своим двойством о том, почему порядок сборки и ревизии «неправильный». Это не так, что они находятся в неправильных заказах, но они не в любом заказа.

Версия сборки, когда дело доходит до нее, является Major.Minor. Из вышеперечисленного link Microsoft говорит: «Последующие версии сборки, которые отличаются только номерами сборки или ревизий, считаются обновлениями исправлений предыдущей версии ». [Мой акцент]

Build представляет собой перекомпиляцию того же источника.Редакция представляет собой изменение кода, но которое полностью взаимозаменяемо с другими версиями той же версии [Major.Minor]. Но ни один из них не имеет приоритета над другим.

Так, в целом, не думаю, что это как:

+ Major 
| 
+-+ Minor 
    | 
    +-+ Build 
    | 
    +-+ Revision 

Но вместо этого:

+ Major 
| 
+-+ Minor 
    | 
    +-+ Build 
    | 
    +-+ Revision 
+0

Это объяснение делает вещи менее запутанными. Было действительно сложно проверить, что у меня есть те же версии .Net, которые установлены на разных машинах. В частности, номер версии «Revision» всегда отличается от версий ОС, в то время как номера Major, Minor и Build одинаковы. Например. в Windows 8.1 мой «... \ Framework64 \ v4.0.30319 \ clr.dll» находится в 4.0.30319.34014, но на сервере Win2k8 r1 файл находится в 4.0.30319.18444. – Granger

 Смежные вопросы

  • Нет связанных вопросов^_^