asp.net-core - Azure Pipelines 在脚本中使用包含换行符的字符串值设置变量
问题描述
我正在尝试为内部包含多个 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 :(
解决方案
您将变量设置为 job-scoped。
您需要设置一个多作业输出变量##vso[task.setvariable variable=myOutputVar;isOutput=true]
推荐阅读
- dataframe - 如何使用pyspark在每次迭代中将数据框结果保存在具有不同名称的配置单元表中
- outlook - 文本框中的用户表单 vlookup
- javascript - 让命运之轮停在 Angular 4 中的特定位置
- angular - TypeError:_this.handler.handle 不是函数
- oracle - Oracle 无效标识符(带内连接)
- vsto - 如何检测用户何时在 Outlook VSTO 中选择 NEW 或 OPEN 邮件
- mysql - MySql - 从具有大量连接表的主表中选择
- typescript - 如何使用父静态方法在 TypeScript 中创建子类?
- git - 使用提交 sha 过滤 gitlab 提交历史
- php - 删除 index.php 时出现 Codeigniter 错误 403