我正在尝试为内部包含多个 Web 项目的解决方案构建 aspnetcore 工件。默认的 netcore 发布任务具有“发布 Web 项目”复选框,可查找包含 web.config 或 wwwroot 文件夹的所有项目,但我的 WebApi 项目根本不需要它们。您可以禁用此复选框并提供要发布的项目的路径。每个项目必须在单独的行中提供。
因此,如果我在任务属性窗口中编辑此设置,则一切正常,因为多行编辑器的行为符合预期。但我想将项目列表移动到变量,所有其他配置都被存储。然而变量的编辑器是单行的。
我决定将项目名称放入带有“;”的变量中 分隔符并编写正确构建发布任务路径的powershell任务:
$projects = '$(PublishProjects)'
$result = ( $projects.Split(@(';'), [System.StringSplitOptions]::RemoveEmptyEntries) | %{ ('**\' + $_.Trim() + '.csproj') } ) -join "`n"
Write-Host "##vso[task.setvariable variable=PublishProjectsPath]$result"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会导致将 PublishProjectsPath`s 值设置为仅第一个项目,导致除第一个项目之外的所有项目路径都打印在自己的行上,而没有 ##vso... ,因此 azure 会有效地忽略它们。
有什么方法可以正确设置脚本中的管道变量吗?我无法使用 azure-pipelines.yml 因为 azure 不支持 gitlab :(
azure-devops asp.net-core azure-pipelines-build-task azure-pipelines