模板:
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
,它似乎使用默认的空字符串并找到解决方案文件(在某些情况下)。但是,如果我确实设置了某些存储库中需要的前缀,则它找不到该文件。我尝试了在模板中引用参数的各种方法(${{}}
、$()
、$[]
和其他)以及在管道中指定它的不同方法,包括对路径进行硬编码(虽然我想改用变量),但没有任何作用。
我想也许变量会起作用,所以我也尝试在管道中指定变量并在模板中使用它们,但这会导致同样的错误。在模板中定义变量给我一个模板编译错误(意外的标记“变量”或类似的东西)。
答案 0 :(得分:0)
看看你通过了什么,并在精神上扩展结果。
${{parameters.PathPrefix}}**/$(Build.DefinitionName).sln
如果 Build.DefinitionName
是 foo,并且您将其作为 PathPrefix
传入,那么您得到的是:
foo**/foo.sln
看起来你想要在那里多一个正斜杠,所以你得到 foo/**/foo.sln
。