Как я могу ссылаться на проект как на зависимость пакета с определенной версией в AppVeyor и GitVersion?

У меня есть следующие определения after_build в моем appveyor.yml:

after_build:
- cmd: nuget pack "%project_file%" -properties "Configuration=%configuration%" -version "%GitVersion_NuGetVersion%" -symbols
- cmd: nuget pack "%extras_project_file%" -properties "Configuration=%configuration%" -version "%GitVersion_NuGetVersion%" -symbols

Теперь у меня есть эти два .proj-файла, которые содержат соответствующий .nuspec-файл:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <authors>$author$</authors>
  </metadata>
</package>

Наконец, у меня есть небольшое дополнение для extras_project_file:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <authors>$author$</authors>
    <dependencies>
      <dependency id="***project_name***" version="$version$" />
    </dependencies>
  </metadata>
</package>

На самом деле, project_name заменено жестко заданным значением для простоты — пока нет внедрения -properties. Во-вторых, любые элементы, связанные с проектом, такие как description и authors, были опущены, чтобы обеспечить нейтральный вопрос, несмотря на то, что они обязательны для фактической упаковки.

project_file успешно упакован:

Попытка сборки пакета из «Caliburn.Micro.Contrib.Controller.csproj».
Автоматическое определение MSBuild: использование версии msbuild «14.0» из «C:\Program Files (x86)\MSBuild\14.0\bin».< br> Упаковка файлов из 'C:\projects\dotnet-caliburn-micro-contrib-controller\src\Caliburn.Micro.Contrib.Controller\bin\Release'.
Использование 'Caliburn.Micro.Contrib.Controller.nuspec ' для метаданных.
Найдено packages.config. Использование пакетов, перечисленных в качестве зависимостей
Успешно создан пакет «C:\projects\dotnet-caliburn-micro-contrib-controller\Caliburn.Micro.Contrib.Controller.0.1.0-unstable0068.nupkg».

В то время как extras_project_file терпит неудачу:

Попытка сборки пакета из «Caliburn.Micro.Contrib.Controller.Extras.csproj».
Автоматическое определение MSBuild: использование версии msbuild «14.0» из «C:\Program Files (x86)\MSBuild\14.0\bin» .
Упаковка файлов из C:\projects\dotnet-caliburn-micro-contrib-controller\src\Caliburn.Micro.Contrib.Controller.Extras\bin\Release.
Использование Caliburn.Micro.Contrib .Controller.Extras.nuspec' для метаданных.
Найдено packages.config. Использование пакетов, перечисленных как зависимости
Версии, использующие SemVer 2.0.0, не поддерживаются: 0.1.0-unstable.68+Branch.develop.Sha.7f85e35f315f7fe3ecd35762b65802e5467a57c2.

Я даже не уверен, что эта функция (замена токена в <dependencies>) реально доступна.

Если нет, то как еще я могу упаковать два .csproj-файла в два отдельных .nupkg-файла, где один зависит от другого с определенной версией (той же версией, что и пакет для сборки)?


person Community    schedule 03.12.2016    source источник


Ответы (1)


Я нашел способ для этого сценария, но он пропускает %AssemblyInformationalVersion%, который проставляется в окончательном .dll-файле в качестве атрибута (поэтому мне нужно проверить GitVersionInformation-класс для фактического значения).

Я добавил assembly-informational-format: '{LegacySemVerPadded}' к GitVersion.yml.

Затем я удалил дополнительный элемент dependencies в .nuspec, так что оба снова совпадают (=сброс).

Наконец, я адаптировал свой after_build:

after_build:
  cmd: nuget pack "%project_file%" -properties "Configuration=%configuration%" -symbols 
  cmd: nuget pack "%extras_project_file%" -properties "Configuration=%configuration%" -IncludeReferencedProjects -symbols 
person Community    schedule 03.12.2016