.NET: большие номера версий в AssemblyVersionAttribute
У нас есть соглашение о версировании наших сборников как [major]. [minor]. [micro]. [revision], например. 2.1.2.33546.
Наша сборка script автоматически обновляет файл AssemblyInfo.cs, содержащий
[assembly: AssemblyVersion("x.y.z.w")]
чтобы вставить номер версии в сборку.
Но наш Subversion-репозиторий просто дошел до версии # 65535, которая нарушила нашу сборку.
Оказывается, что каждое число в номере версии имеет максимальное значение 65534 (вероятно, из-за ограничения Windows).
Вы столкнулись с этой проблемой? Любые хорошие решения/обходные пути?
Нам нравится схема вложения номера ревизии, и мы, очевидно, не можем просто reset наш Subversion-сервер: -)
Ответы
Ответ 1
Немного больше Фоновая информация:
Почему числа сборки ограничены 65535?
Поскольку это вряд ли изменится, ваши варианты:
- Возьмите версию Modulo 65535, что означает, что вы вернулись к 1
- Используйте Micro-Field в своем номере версии, чтобы разделить номер версии, разделив версию на 1000. Это означает, что ваша версия может быть 1.0.65.535
- Не храните SVN-версию в AssemblyVersion, а вместо этого в AssemblyInformationalVersion. Таким образом, ваше приложение может по-прежнему обращаться к нему для целей показа, хотя вы больше не можете использовать проводник Windows, чтобы быстро проверить версию SVN
- Не храните SVN-версию в AssemblyVersion, а вместо этого в полях AssemblyProduct или AssemblyDescription. Опять же, таким образом ваше приложение все равно сможет получить к нему доступ, но и Explorer теперь покажет его в Листе свойств.
Ответ 2
Одним из вариантов может быть просто использовать [AssemblyFileVersion]
; это все равно вызывает предупреждение, но оно будет построено, по крайней мере:
[assembly: AssemblyFileVersion("1.0.0.80000")]
Ответ 3
Мы решили использовать одно и то же соглашение, и из-за ограничений номеров версий Windows мы решили отказаться от "микро" части наших номеров версий, чтобы сохранить номер версии. Наши номера версий теперь [major].[minor].[revision / 10000].[revision % 10000]
, поэтому сборки, построенные из версии 65535, имеют версию 2.01.6.5535.
Ответ 4
Согласно MSDN, компоненты номера версии AssemblyVersionAttribute ограничены UInt16.MaxValue - 1
метаданными сборки, то есть вы можете ' t хранить большие числа в файле сборки. Версия файла, как предлагает Марк Гравелл, может быть достаточно для вас, в зависимости от того, кто будет читать ваш номер версии.