Azure Pipelines在脚本中使用包含换行符的字符串值设置变量

问题描述 投票:0回答:2

我正在尝试为内部包含多个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"

[不幸的是,这导致将PublishProjectsPath的值设置为仅第一个项目,导致除第一个项目以外的所有项目路径都在自己的行上打印而没有## vso ...,因此azure有效地忽略了它们。

是否可以通过脚本正确设置管道变量?我无法使用azure-pipelines.yml,因为azure不支持gitlab:(

asp.net-core azure-devops azure-pipelines azure-pipelines-build-task
2个回答
0
投票

您设置了变量as job-scoped

您需要用multi job output variable设置##vso[task.setvariable variable=myOutputVar;isOutput=true]


0
投票

在脚本中使用包含换行符的字符串值设置变量

对于这个问题,目前尚不支持Azure天蓝色的开发人员。尽管dotnet publish task具有支持多行内容的文本框,但当前不支持将多行字符串作为变量的值。

到目前为止,在我们对Azure Devops论坛的正式功能建议中,已经存在这样的建议:https://developercommunity.visualstudio.com/idea/365667/multiple-lines-variable-in-build-and-release.html

您可以对建议单进行投票并在此处分享您的评论,产品团队将在查看建议后提供更新。任何对此感兴趣的人都可以投票并对其进行跟踪。

© www.soinside.com 2019 - 2024. All rights reserved.