Упаковка и публикация пакетов NuGet с помощью.NET CLI в TeamCity

Я пытаюсь создать шаблон сборки Team City, который требует минимальной настройки, и я хочу, чтобы он хорошо сочетался с устаревшими проектами и проектами, разработанными с использованием.NET Core/Standard и.NET CLI. Я застрял с NuGet, так как произошли значительные изменения в том, как все работает.

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

новый csproj Формат файла позволяет нам определять все свойства пакета внутри себя. Это хорошо, но как тогда мы узнаем, какие проекты должны быть упакованы, а какие нет?

Пока что шаг нашего TeamCity в сборке Pack NuGet только содержал **.nuspec за Specification files: поле. Сам факт nuspec наличие файла служило флагом pack & publish this project,

Однако для dotnet pack нам нужно уточнить проект. Нет простого способа отличить "основные" проекты от "вспомогательных", от которых зависит сеть. (Давайте не будем обращать внимания на то, что ссылки между проектами в настоящее время не поддерживаются.)

Мы также можем упаковать все проекты, указав **.*proj (однако в этом случае мы должны знать, какие пакеты публиковать) или мы могли бы явно указать проекты в конфигурации сборки, но мне не нравится этот подход, потому что вы должны редактировать конфигурацию сборки каждый раз, когда новый проект добавляется в решение.

Я тоже рассматривал вариант Generate package on build и опустить dot net pack шаг как пакет создан при сборке. Осталось только опубликовать пакеты с dotnet nuget push указав **/%BuildConfiguration%/*.nupkg, К сожалению, при запуске сборки против решения без проектов с включенным Generate package on build делает TC терпеть неудачу, жалуясь, что

Целевые файлы не найдены для шаблона "**/Release/*. Nupkg"

Следовательно, мне либо нужен другой рецепт для достижения требуемого результата, либо совет, как заставить TC рассматривать пустой результат просто как NOP и помечать сборку как успешную.

Еще один вариант заключается в использовании nuspec даже для нового csproj...

1 ответ

Начиная с TeamCity 2017.2 будет доступна опция связывания конфигурации сборки с несколькими шаблонами. Таким образом, вы сможете создавать различные шаблоны для создания пакетов для старых проектов и новых проектов.NET CLI.

Чтобы указать пути для целевых проектов.NET, которые должны быть упакованы, вы можете использовать параметры конфигурации сборки.

Чтобы установить такие параметры во время сборки, вы можете отправить в предыдущем шаге сервисное сообщение. Значение этого параметра может быть установлено в список целевых файлов проекта, которые можно выбрать с помощью сценария, например: /questions/12646876/kak-najti-stroku-v-neskolkih-fajlah-i-vernut-imena-fajlov-v-powershell/12646899#12646899

Другие вопросы по тегам