Атрибут версии NuSpec и версия сборки

При создании пакета nuget версия в имени файла пакета nuget, похоже, исходит из файла AssemblyInfo в проекте веб-приложения. Я также создал атрибут версии внутри файла nuspec.

Какова связь между этими двумя номерами версий и есть ли какие-либо соглашения?


person BjartN    schedule 15.08.2012    source источник


Ответы (2)


Что касается соглашения, само программное обеспечение 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

Между версией сборки и версией пакета nuget не должно быть связи. По соглашению многие сопровождающие используют один и тот же номер для обоих.

Соглашение об использовании одного и того же номера также является nuget.exe по умолчанию, если у вас нет nuspec или вы используете nuget.exe spec для создания токенизированного файла nuspec. Однако если вы замените токен $version$ значением, то это значение будет иметь приоритет и будет использоваться в имени файла пакета.

Вы также можете установить версию в командной строке, которая имеет приоритет над всем вышеперечисленным.

Дополнительная информация в блоге Ксавье: объяснение токена NuGet $version$< /а>

person Jim Counts    schedule 15.08.2012