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

Атрибут версии NuSpec по сравнению с версией сборки

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

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

4b9b3361

Ответ 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 и друзьях.

Ответ 2

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

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

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

Дополнительная информация о блоге Xavier: Обозначается токен NuGet $version $