Внедрение предварительных версий в поколение CSPROJ NuPkg - PullRequest
0 голосов
/ 26 июня 2018

Я использую новую схему CSPROJ, представленную в Visual Studio 2017. Кроме того, я использую это для создания NuPkg для моей сборки.

<PropertyGroup>
  <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  <PackageId>MyComponent</PackageId>
  <Version>2.1.0</Version>
 .
 .
 .
</PropertyGroup>

Я использую VSTS для сборки своего решения, и я хотел бы использовать сборку для контроля качества пакета, добавив к тегу предварительное обозначение. Примерно так:

  <Version>2.1.0$(VERSIONSUFFIX)</Version>

Чтобы получить имена пакетов, такие как:

  • MyComponent.2.1.0-альфа-12345.nupkg
  • MyComponent.2.1.0-бета-67890.nupkg
  • MyComponent.2.1.0.nupkg

Это работает нормально, но я обнаружил неприятный побочный эффект - если я редактирую номер версии в интерактивном режиме в Visual Studio, он удаляет заполнитель $(VERSIONSUFFIX). Единственный способ обновить номер версии - это напрямую отредактировать CSPROJ.

Есть ли лучший способ позволить сборке управлять поколением NuPkg?

Спасибо

-John

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Вы можете использовать переменные сборки для указания версии пакета и версии префикса в задаче пакета NuGet, как вам нужно.

Если вы хотите использовать версию сборки для версии пакета и изменить версию префикса по своему усмотрению, вы можете использовать следующие шаги:

1. Получить сборочную версию

Вы можете добавить задачу Информация о сборке , затем вы можете получить версию сборки по переменной $(ASSEMBLYINFO.ASSEMBLYVERSION).

2. Определите версию пакета и версию префикса, как вам нужно

Вы можете определить переменную в своем определении сборки, чтобы указать только префиксную версию. Например, переменная ver с префиксом part beta-1.1.

enter image description here

Добавьте задачу PowerShell для объединения $(ASSEMBLYINFO.ASSEMBLYVERSION) и версии префикса вместе для упаковки пакета nuget. Сценарий PowerShell может быть:

Write-Host "##vso[task.setvariable variable=ver]$(ASSEMBLYINFO.ASSEMBLYVERSION)-$(ver)"

Таким образом, переменная $(ver) содержит версию с префиксом version.

3. Укажите определенную версию с префиксом для пакета, который будет упакован

В задаче пакета NuGet выберите Использовать переменную среды для параметра Автоматическое управление версиями пакета и укажите ver в качестве переменной среды.

enter image description here

Тогда упакованный пакет будет в формате MyComponent.2.1.0-beta-1.1.nupkg и т. Д.

0 голосов
/ 26 июня 2018

Редактор всегда изменит Version и удалит все настройки.

Предлагаемый способ нового SDK - установить VersionPrefix в сборке и VersionSuffix - если он установлен - будет добавлен к нему.

Так что у вас будет

<VersionPrefix>1.2.3</VersionPrefix>

и может построить с использованием -p:VersionSuffix=beta-123 для создания файла 1.2.3-beta-123.nupkg. Но редактирование в свойствах VS становится невозможным.

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