Вопрос по nuget-package, nuget – Атрибут версии NuSpec или версия сборки

28

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

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

Ваш Ответ

2   ответа
19

Что касаетсяconventionсамо программное обеспечение NuGet и его семантика, применяемая к пакетам в галерее, выполняет управление версиями, как описано вSemVer. Specifically you can designate beta versions by suffixing your nuspec version number with "-beta.4" or something. For example, see how the gallery displays последняя версия AutoFacи сравнить, как это отображаетсястарый релиз (note the text "This is not the latest version of Autofac available." Edit: Похоже, что в галерее больше нет специальных сообщений для устаревших версий) истарая версия PRE-релиза (с текстом «Это предварительная версия Autofac.»).

К сожалению,AssemblyVersion вAssemblyInfo.cs может не содержать букв или дефисов, поэтому его нельзя использовать таким образом. Тем не менееAssemblyInformationalVersion МОГУТ содержать буквы и дефисы, и, если вы предоставите их, NuGet будет использовать их вместоAssemblyVersion заменить$version$ токен в вашем файле nuspec. Более того,AssemblyInformationalVersion (также называемый «версией продукта», если вы проверяете детали DLL в проводнике Windows), по крайней мере для меня, лучше показывает, какая версия NuGet должна соответствовать.

Я немного обеспокоен этим подходом, поскольку я должен покинутьAssemblyVersion то же самое с помощью различных бета-итераций и конечной производственной итерацииAssemblyInformationalVersion, что означает, что я допускаю использование нескольких разных версий моей DLL в дикой природе, которые могут вести себя по-разному или неправильно, но все они идентичны в отношении CLR (CLRonly заботится оAssemblyVersion). Однако на практике это происходит часто (в том числе с пакетами AutoFac, описанными выше), и, похоже, это не вызывает проблемы.

Посмотрите два превосходных ответа с наибольшим количеством голосов наВ чем различия между AssemblyVersion, AssemblyFileVersion и AssemblyInformationalVersion? для получения дополнительной информации оAssemblyInformationalVersion и друзья.

9

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

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

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

Больше информации в блоге Ксавье:Объяснение токена NuGet $ version $

Похожие вопросы