Контекст:
У меня есть несколько проектов в одном решении, которые я проталкиваю по конвейеру, который упаковывает их в пакеты NuGet и сохраняет их в моем хранилище артефактов Azure.
Шаги:
- Установить NuGet
- Восстановление NuGet
- Построение решения
- Запуск тестов
- Пакет NuGet (пакет dotnetточнее говоря, так как они нацелены на .NET Standard)
- 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) , поскольку они остаются в пути к хранилищу, их все еще можно обнаружитьпо соответствующей схеме.
Однако я не чувствую, что это настолько надуманный вариант использования, что у него не будет «поддерживаемого» решения (я могу ошибаться, конечно).Или установлена другая «лучшая практика»?