#.net #c#-4.0 #msbuild #continuous-integration #msbuild-task
#.net #c #-4.0 #msbuild #непрерывная интеграция #msbuild-задача
Вопрос:
Я настраиваю среду сборки для нескольких проектов. Каждый проект имеет более одного решения. Мне нужно создать все решения, которые будут находиться в разных папках в корневом каталоге. Рычаг папки с файлами решения, находящимися в корневом каталоге, может отличаться. То есть файл решений может быть встроен в папку, которая, в свою очередь, может находиться в другой папке и так далее. Как я могу выполнить поиск в структуре корневых каталогов и получить список всех решений (.sln) имя файла и его путь с помощью MSBuild, чтобы я мог создавать эти решения?
Аналогично, мне пришлось бы искать и получать список всех dll и exe, сгенерированных из сборки, чтобы я мог выполнить для них статический анализ кода. Я ищу способ поиска и получения списка сборок и пути к их файлам.
Комментарии:
1. Возможно, стоит хранить все файлы решений в одной папке?
2. Если бы я создавал эти проекты, я бы демонстративно структурировал решения так, чтобы они находились в одной папке. К сожалению, у меня нет такой роскоши.
Ответ №1:
Это позволит найти и сообщить обо всех файлах решений под папкой файла, в который он помещен:
<Target Name="FindSolutions">
<ItemGroup>
<SolutionFile Include="$(MSBuildThisFileDirectory)***.sln" />
</ItemGroup>
<Message Text="Found '%(SolutionFile.Identity)'" />
</Target>
Ключ — это тот **
, который рекурсивно соответствует всем папкам.
Комментарии:
1. Спасибо, мозг, я подумал, что ** будет сверлить в одной папке ниже корневого ie из примера about в папке ниже $(MSBuildThisFileDirectory) . Что делать, если файл решения похоронен в более глубоком, как …….sln или ….. фсл . Как мне справиться с этой ситуацией?