Подтвердить что ты не робот

.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-сервер: -)

4b9b3361

Ответ 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 хранить большие числа в файле сборки. Версия файла, как предлагает Марк Гравелл, может быть достаточно для вас, в зависимости от того, кто будет читать ваш номер версии.