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