我可以使用 VSBuild@1 yaml 任务来恢复多个项目吗?

时间:2021-03-30 12:02:11

标签: azure-devops yaml

我需要使用 VSBuild yaml 任务恢复 3 个项目 (csproj)。我知道如果我添加 3 个 yaml 任务我可以做到,但我想知道是否有办法只使用一个任务来恢复它们。 我已经这样试过了:

  - task: VSBuild@1
    displayName: 'Restore projects'
    inputs:
      solution: "'**/Project1.csproj';'**/Project2.csproj'"
      msbuildArgs: '/t:Restore'
      vsVersion: $(VSVersion)
      platform: '$(BuildPlatform)'
      configuration: '$(Configuration)'

,并且我没有语法错误,但管道失败并出现以下错误:“使用搜索模式未找到解决方案...”

2 个答案:

答案 0 :(得分:1)

通常,您指定要构建的解决方案文件(例如 *.sln)而不是单个项目。因此,如果可以提供包含您需要的 3 个项目的解决方案文件名,那将是最好的方法。

如果这不适合您的情况,您可以使用通配符来提供适合所有 3 个项目的掩码,例如 **/Project*.csproj

作为最后一个选项,您可以尝试切换到 MSBuild task。事实上,the docs say

<块引用>

在某些情况下,您可能需要使用 MSBuild 任务。例如,如果您正在构建与解决方案无关的代码项目,则应该使用它。

答案 1 :(得分:1)

VSBuild 任务无法识别此格式 "'**/Project1.csproj';'**/Project2.csproj'" 的多个项目。您可以使用通配符 **/Project*.csproj 来映射您的项目。

- task: VSBuild@1
  displayName: 'Restore projects'
  inputs:
    solution: '**/Project*.csproj'
    msbuildArgs: '/t:Restore'

如果您的项目是 dotnet 核心项目。您可以使用支持多行输入的 DotNetCoreCLI 任务:

steps:
- task: DotNetCoreCLI@2
  displayName: 'dotnet restore'
  inputs:
    command: restore
    projects: |
     **/Project1.csproj
     **/Project2.csproj
     **/Project3.csproj
相关问题