#azure-devops #yaml
#azure-devops #yaml
Вопрос:
Мне нужно восстановить 3 проекта (csproj) с помощью задачи VSBuild yaml. Я знаю, что смогу это сделать, если добавлю 3 задачи yaml, но мне интересно, есть ли способ восстановить их все, используя только одну задачу. Я уже пробовал так:
- task: VSBuild@1
displayName: 'Restore projects'
inputs:
solution: "'**/Project1.csproj';'**/Project2.csproj'"
msbuildArgs: '/t:Restore'
vsVersion: $(VSVersion)
platform: '$(BuildPlatform)'
configuration: '$(Configuration)'
и у меня нет синтаксических ошибок, но конвейер завершается с ошибкой: «Решение не найдено с использованием шаблона поиска …»
Ответ №1:
Обычно вы указываете файлы решений для сборки (например, *.sln), а не отдельные проекты. Поэтому, если возможно указать имя файла решения, которое включает в себя те 3 проекта, которые вам нужны, это было бы наилучшим подходом.
Если это не подходит для вашего случая, вы можете использовать подстановочные знаки, чтобы предоставить маску, которая подходит для всех 3 проектов, например, **/Project*.csproj
.
В качестве последнего варианта вы можете попробовать вместо этого переключиться на задачу MSBuild. Фактически, в документах говорится, что:
В некоторых случаях может потребоваться использовать задачу MSBuild. Например, вы должны использовать ее, если вы создаете проекты с кодом отдельно от решения.
Ответ №2:
Задача VSBuild не может распознать несколько проектов в этом формате "'**/Project1.csproj';'**/Project2.csproj'"
. Вы можете использовать подстановочные **/Project*.csproj
знаки для сопоставления своих проектов.
- task: VSBuild@1
displayName: 'Restore projects'
inputs:
solution: '**/Project*.csproj'
msbuildArgs: '/t:Restore'
Если ваши проекты являются проектами dotnet core. Вы можете использовать задачу DotNetCoreCLI, которая поддерживает ввод нескольких строк:
steps:
- task: DotNetCoreCLI@2
displayName: 'dotnet restore'
inputs:
command: restore
projects: |
**/Project1.csproj
**/Project2.csproj
**/Project3.csproj