在与AzureDevops模式匹配的文件上循环



我的Azure管道有一个文件模式参数。https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/file-matching-patterns?view=azure-devops

我想做一个(可能是PowerShell(步骤来遍历文件,但PowerShell不理解Azure管道文件通配符,是吗?

$projectsToPack = '**CompanyName.@(This|That).csproj'
echo "Projects to pack are: $projectsToPack"
foreach( $csproj in "$projectsToPack" ) {
#foreach( $csproj in Get-ChildItem "$projectsToPack" -Recurse ) { # Get-ChildItem : Illegal characters in path.
#foreach( $csproj in Get-ChildItem  -Filter "$projectsToPack" ) { # Get-ChildItem : Illegal characters in path.
echo "csproj is $csproj"
}

可以循环浏览这些文件吗?

我认为这个问题是

Powershell能理解azure管道文件模式语法吗?

,答案是否定的。

Powershell有自己的语法和globbing文件的过程(如果对象比简单的glob更复杂,请查看对象的位置(。

例如

$Projects = Get-Item **CompanyName.*.csproj
ForEach( $Project in $Projects ) {
# enter code here
}

azure pipelines语法用于将路径过滤器明确传递给任务的位置。

从字里行间看,你似乎想循环浏览一些项目并将其打包。你可以使用内置的DotNetCoreCLI@2任务并在其中传递模式参数?

例如

- task: DotNetCoreCLI@2
inputs:
command: 'pack'
packagesToPack: '**CompanyName.@(This|That).csproj'
versioningScheme: 'off'

最新更新