【发布时间】:2021-08-09 18:14:30
【问题描述】:
模板:
parameters:
- name: PathPrefix
displayName: 'Path prefix'
type: string
default: ''
steps:
- task: DotNetCoreCLI@2
displayName: 'dotnet restore'
inputs:
command: restore
projects: ${{parameters.PathPrefix}}**/$(Build.DefinitionName).sln
管道:
resources:
repositories:
- repository: devops
name: foo/devops
type: git
ref: master
trigger:
branches:
include:
- refs/heads/*
jobs:
- job: Job_1
displayName: Agent job 1
pool:
vmImage: windows-latest
steps:
- checkout: self
- template: azure/pipelines/pipeline.yaml@devops
parameters:
PathPrefix: $(Build.DefinitionName)
还原步骤中的运行错误:
##[error]No files matched the search pattern.
即使在恢复步骤中设置verbosityRestore: detailed 也没有给我更多信息。
如果我不设置PathPrefix,它似乎使用默认的空字符串并找到解决方案文件(在某些情况下)。但是,如果我确实设置了某些存储库中需要的前缀,它就找不到该文件。我尝试了在模板中引用参数的各种方法(${{}}、$()、$[] 和其他)以及在管道中指定它的不同方法,包括硬编码路径(尽管我想使用变量),但没有任何作用。
我认为也许变量会起作用,所以我也尝试在管道中指定变量并在模板中使用它们,但这会导致相同的错误。在模板中定义变量给了我一个模板编译错误(意外的标记“变量”或类似的东西)。
【问题讨论】:
-
在黑暗中开枪,您是否尝试过添加引号来转义特殊字符?
'${{parameters.PathPrefix}}**/$(Build.DefinitionName).sln'
标签: azure-devops azure-pipelines azure-pipelines-yaml