Как создать предварительный пакет Nuget, используя номер версии из сборки - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь создать пакет Nuget, используя azure devops. Я хочу создать предварительную версию пакета до создания стабильного выпуска. В настоящее время я пытаюсь упаковать приложение .netstandard 2.0.

Что я пробовал -

Попытался установить версию в csproj - <Version>1.0.6-alpha</Version>. Это на самом деле работает, но я не уверен, как можно удалить этот альфа-тег, если я хочу повысить его до стабильной версии

Я хочу, чтобы пакет взял версию из сборки (не использует автоматическое управление версиями), например, если версия сборки 1.0.0, мне нужен пакет с версией 1.0.0-alpha, а затем 1.0.0, когда он будет переведен в производство. В Интернете можно увидеть множество решений, в которых используются номера предустановленных версий (на вкладке «Переменные») и добавляется номер сборки и т. Д. c, но я ищу способ использовать версию из самой сборки, а не заданную пользователем. Эта является ссылкой, которая объясняет версию пакета

Ниже приведен конвейер, который я пробовал

enter image description here

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Как создать предварительный пакет Nuget, используя номер версии из сборки

Поскольку вы пытаетесь упаковать приложение .netstandard 2.0, мы можем использовать dotnet pack, версия извлекается из определения проекта (ранее project.json, сейчас *.csproj), а не сборки AssemblyInfo.cs.

Из проекта . json в csproj миграция документы Вы можете использовать свойства VersionPrefix и VersionSuffix в файле проекта .csproj:

<PropertyGroup>
  <VersionPrefix>1.0.0</VersionPrefix>
  <VersionSuffix>alpha</VersionSuffix>
</PropertyGroup>

По вашему запросу:

if the assembly version is 1.0.0 i need a package that is 1.0.0-alpha and later 1.0.0 when its moved to production

Чтобы решить эту проблему, я установил значение VersionSuffix равное null, то есть:

<PropertyGroup>
  <VersionPrefix>1.0.0</VersionPrefix>
  <VersionSuffix></VersionSuffix>
</PropertyGroup>

Затем мы используем DotNetCoreCLI custom d onet задача вместо nuget pack задача с аргументом --version-suffix "alpha":

enter image description here

Результат:

enter image description here

В этом случае мы можем сгенерировать версию пакета 1.0.0-alpha, когда версия сборки 1.0.0.

С другой стороны, мы могли бы удалить аргумент --version-suffix "alpha", когда он перемещен к производству:

enter image description here

Теперь, это должно быть все, что вы хотите.

Надеюсь, это поможет.

0 голосов
/ 04 марта 2020

NuGet.exe в основном используется для упаковки nuspec файлов.

При работе с современным форматом csproj такие вещи, как версия, указываются с помощью свойств MSBuild, если она указана, она будет переопределять то, что установлено в csproj, т. е. из командной строки, используя. NET CLI.

dotnet pack /p:Version=VERSIONNUMBER (или запуск MSBuild с целью pack).

В Azure конвейере DevOps Задача, которую вы можете ввести, используя задачу «. NET CLI», используя команду pack и указав дополнительные опции Additional pack options

Но рекомендуемое использование - автоматическое управление версиями сборки, предпочтительно использование сборки номер (номер сборки может быть установлен из конфигурации, сценариев или выведен с помощью таких задач, как, например, GitVersion, использование номера сборки даст прослеживаемость)

Automatic packaging versioning

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...