Переопределить версию пакета NuGet из CLI

Мне нравится использовать номер сборки или какой-либо другой вычисляемый номер версии в моем конвейере CICD для пакетов NuGet. По сути, я предпочитаю, чтобы разработчик контролировал основные и второстепенные номера версий, но автоматически увеличивал сборку.

С nuget.exe я мог бы использовать переключатель -Version, чтобы переопределить версию в финальном пакете. Однако с проектом библиотеки .NET Core 2.0 это не удается, и мне приходится использовать dotnet pack, см.:

https://github.com/NuGet/Home/issues/4491

Это только аргумент CLI --version-prefix для dotnet pack, так как мне полностью переопределить версию?


person Luke Puplett    schedule 05.10.2017    source источник


Ответы (1)


Вы можете использовать едва задокументированную опцию /p:

dotnet pack /p:PackageVersion=2.1.0

Видеть

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-pack?tabs=netcore2x

Очевидно, вы можете комбинировать это по своему усмотрению в своем инструменте CICD, например, для VSTS:

/p:Version=$(Build.BuildNumber)

Примечание В VSTS есть несколько вариантов автоматического управления версиями в задаче сборки .NET Core, когда используется глагол "упаковать" (предварительная версия по состоянию на 5 октября 2017 г.).

Окончательное решение для меня в VSTS состояло в том, чтобы использовать задачу .NET Core dotnet pack с настройкой Use the build number и следующим форматом номера сборки, установленным в параметрах для определения сборки:

2.0.$(Build.BuildId)

Инженер должен будет изменить версию после внесения крупных или критических изменений. Я бы предпочел это в коде; однажды я напишу какой-нибудь скрипт, чтобы поднять номер из .csproj в систему сборки.

person Luke Puplett    schedule 05.10.2017
comment
Кстати, вы также можете определить /p:BuildNumber=$(Build.BuildId), а затем в csproj иметь <BuildNumer Condition="'$(BuildNumber)'==''">0</…> и <Version>2.0.$(BuildNumber)</…>, чтобы вы могли установить часть версии в csproj - person Martin Ullrich; 05.10.2017
comment
Я попробовал это, и это, кажется, ничего не делает. И никаких ошибок не выдает. - person Lost; 25.10.2019
comment
Спасибо @MartinUllrich. Это сработало очень хорошо для меня. - person Per; 15.02.2021