Трубопроводы Azure. Способ работы шаблона распознавания файлов с папками решений (Visual Studio)? - PullRequest
0 голосов
/ 19 декабря 2018

Контекст:

У меня есть несколько проектов в одном решении, которые я проталкиваю по конвейеру, который упаковывает их в пакеты NuGet и сохраняет их в моем хранилище артефактов Azure.

Шаги:

  1. Установить NuGet
  2. Восстановление NuGet
  3. Построение решения
  4. Запуск тестов
  5. Пакет NuGet (пакет dotnetточнее говоря, так как они нацелены на .NET Standard)
  6. NuGet push (в хранилище артефактов)

Однако решение содержит несколько еще незавершенных пакетных проектов, которыеЯ пока не хочу упаковывать так же, как и мой тестовый проект, который также следует исключить.

Достаточно просто, в этом случае мой шаблон сопоставления файлов будет просто содержать имена проектов, которые я хочу, например:

'**/*Proj1.csproj;**/*Proj2.csproj;**/*Proj3.csproj;'

Но теперь я хочу добавить несколько новых проектов в этот комплект поставки.Поэтому мой шаблон должен будет также включать их.

'**/*Proj1.csproj;**/*Proj2.csproj;**/*Proj3.csproj;**/*Proj4.csproj;**/*Proj5.csproj;'

Как видите, это вряд ли является общим.Мне приходится изменять шаблон каждый раз, когда что-то меняется, включается или отменяет его - каждый раз, когда я хочу исключить проект.

Я ищу применение того же конвейера или, по крайней мере, структуры(насколько я могу), для нескольких решений одного типа, которые я хотел бы сделать возможным с помощью нескольких соглашений об именах, которые у меня есть.

Вопрос:

Естьесть способ превратить:

'**/*Proj1.csproj;**/*Proj2.csproj;**/*Proj3.csproj;**/*Proj4.csproj;**/*Proj5.csproj;'

в

'**/Packages/**.csproj;' //or something very similar

Где «Пакеты» - это папка VS Solution (поскольку реальные папки не работают внутри базы решения),конечной целью является обнаружение (и упаковка) каждого проекта в папке решения «Пакеты» и игнорирование всего, что находится за его пределами.

Проблема заключается в том, что папки решений не являются реальной частью структуры пути ...

PS - Обходные пути, которые я рассмотрел -

  • Имейте ключевое слово в именах всех проектов, которые я хочу игнорировать, например "Foo.Ignore.csproj", а затем исключите все, которые содержат "Ignore" в имени.
  • Unloading /удаляя незавершенные проекты из решения, но a) Я хочу убедиться, что они находятся в состоянии сборки и тестирования и b) , поскольку они остаются в пути к хранилищу, их все еще можно обнаружитьпо соответствующей схеме.

Однако я не чувствую, что это настолько надуманный вариант использования, что у него не будет «поддерживаемого» решения (я могу ошибаться, конечно).Или установлена ​​другая «лучшая практика»?

...