Ответ 1
Обратите внимание: существуют альтернативные инструменты/правила/схемы/макросы/надстройки/etc для управления версиями по-другому; если они используются, они, очевидно, стирают следующее.
Однако, как версия "*"
вычисляется до .build.revision
в процессе сборки Visual Studio/.NET в ваниле:
При указании версии вы должны, по крайней мере, указать major. Если вы укажете основные и второстепенные значения, вы можете указать звездочку (*) для сборки. Это приведет к тому, что построение будет равно количеству дней с 1 января 2000 года по местному времени, а для версии будет равно количеству секунд с полуночного локального времени, разделенному на 2.
Смотрите Ужас кодирования: определение даты сборки трудным способом и MSDN: AssemblyVersionAttribute. Это поведение расширения по умолчанию задокументировано в классе AssemblyVersionAttribute (BCL!) , а не в специальном поведении компилятора VS (см. Комментарий Daniel), а не только в отношении поведения компилятора.
Вот одна реализация формулы (извлеченная из комментария Daniel):
int Build = DateTime.Today.Subtract(new DateTime(2000, 1, 1)).Days;
int Revision = (int)DateTime.Now.Subtract(DateTime.Today).TotalSeconds / 2;