Ответ 1
Что касается конвенции, то само программное обеспечение NuGet и семантика, применяемая к пакетам в галерее, выполняет управление версиями, как описано SemVer.
В частности, вы можете назначить бета-версии путем суффикса вашего номера версии nuspec с "-b.4" или что-то еще. Например, посмотрите, как в галерее отображается последняя версия AutoFac и сравните, как она отображает старый выпуск ( обратите внимание на текст "Это не последняя версия Autofac доступна". Изменить: Галерея больше не кажется предоставить любое специальное сообщение для не текущих версий) и старая версия PRE-версии (с текстом "Это предварительная версия Autofac." ).
К сожалению, AssemblyVersion
в AssemblyInfo.cs
может не содержать букв или дефис, поэтому его нельзя использовать таким образом. Однако AssemblyInformationalVersion
МОЖЕТ иметь буквы и дефисы в нем, и если вы его предоставите, NuGet будет использовать это вместо AssemblyVersion
для замены токена $version$
в вашем файле nuspec. Более того, AssemblyInformationalVersion
(также называемый "версией продукта", если вы проверяете детали DLL в проводнике Windows), по крайней мере для меня, лучше отражает то, что должна соответствовать версия NuGet.
У меня есть небольшая озабоченность этим подходом в том, что я должен оставить тег AssemblyVersion
одинаковым с помощью различных бета-итераций и окончательной итерации на выходе AssemblyInformationalVersion
, что означает, что я допускаю несколько разных версий моя DLL в дикой природе, которая может вести себя по-другому или неправильно, но все они идентичны по отношению к CLR (CLR только заботится о AssemblyVersion
). На практике это часто происходит (в том числе с пакетами AutoFac, описанными выше), и это не вызывает проблем.
Посмотрите два превосходных наивысших ответа на Что такое различия между AssemblyVersion, AssemblyFileVersion и AssemblyInformationalVersion? для получения дополнительной информации о AssemblyInformationalVersion
и друзьях.