FileTransform@2 - 文件转换 v2 任务
使用此任务将令牌替换为 XML 或 JSON 配置文件中的变量值。
语法
# File transform v2
# Replace tokens with variable values in XML or JSON configuration files.
- task: FileTransform@2
inputs:
folderPath: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
#xmlTransformationRules: '-transform **\*.Release.config -xml **\*.config' # string. XML Transformation rules. Default: -transform **\*.Release.config -xml **\*.config.
# Variable Substitution
#jsonTargetFiles: # string. JSON target files.
#xmlTargetFiles: # string. XML target files.
输入
folderPath
- 包或文件夹
string
. 必需。 默认值:$(System.DefaultWorkingDirectory)/**/*.zip
。
包或文件夹的文件路径。
例如 $(System.DefaultWorkingDirectory)/**/*.zip
。 对于压缩文件夹,内容将提取到 TEMP 位置,执行转换,结果在原始项目位置压缩。
xmlTransformationRules
- XML 转换规则
string
. 默认值:-transform **\*.Release.config -xml **\*.config
。
使用语法提供换行分隔的转换文件规则列表: -transform <pathToTransformFile> -xml <pathToSourceConfigurationFile>
。 结果文件路径是可选的,如果未指定,源配置文件将替换为转换后的结果文件。
jsonTargetFiles
- JSON 目标文件
string
.
提供换行分隔的文件列表,以替换变量值。 提供相对于根文件夹的文件名。
例如,若要替换以下示例中的 值 ConnectionString
,需要将变量 Data.DefaultConnection.ConnectionString
定义为生成或发布管道 (或发布管道的环境) 。
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
}
}
}
变量替换在配置转换后运行。
注意:仅在生成/发布管道中定义的自定义变量用于替换。 排除默认/系统定义的管道变量。 如果在发布管道和阶段中定义了相同的变量,则阶段变量将取代发布管道变量。
xmlTargetFiles
- XML 目标文件
string
.
提供换行分隔的文件列表,以替换变量值。 提供相对于根文件夹的文件名。
对于 XML,在生成或发布管道中定义的变量将与任何配置文件和 的 、 和 部分中的 或 name
parameters.xml
项进行匹配key
。 applicationSettings
connectionStrings
appSettings
变量替换在配置转换后运行。
注意:仅在生成/发布管道中定义的自定义变量用于替换。 排除默认/系统定义的管道变量。 如果在发布管道和阶段中定义了相同的变量,则阶段变量将取代发布管道变量。
任务控件选项
除任务输入外,所有任务都有控制选项。 有关详细信息,请参阅 控制选项和常见任务属性。
输出变量
无。
备注
文件转换版本 2 中的新增功能:
- 更优化的任务字段,允许用户在单个任务实例中启用任何/所有转换 (XML) 、变量替换 (JSON 和 XML) 功能。
- 如果未应用任何配置的转换/替换,或者任务不执行,则任务失败。
使用此任务对配置和参数文件应用文件转换和变量替换。 有关如何处理转换的详细信息,请参阅 文件转换和变量替换参考。
重要
此任务适用于 Web 包,需要 Web 包文件。 它不适用于独立的 JSON 文件。
文件转换
- 目前,仅 XML 文件支持文件转换。
- 若要将 XML 转换应用于配置文件 (*.config) 必须使用语法指定换行分隔的转换文件规则列表:
-t ransform <path to the transform file> -xml <path to the source file> -result <path to the result file>
- 文件转换在许多情况下非常有用,尤其是在要部署到应用服务并且想要通过遵循标准Web.config 转换语法 (开发、测试或生产) 等不同环境添加、删除或修改配置时。
- 还可以使用此功能转换其他文件,包括控制台或 Windows 服务应用程序配置文件 (例如
FabrikamService.exe.config
) 。 - 配置文件转换在变量替换之前运行。
变量替换
- 目前,只有 XML 和 JSON 文件格式支持用于变量替换。
- 目标配置文件中定义的令牌将更新,然后替换为变量值。
- 变量替换在配置文件转换后运行。
- 变量替换仅适用于对象层次结构中预定义的 JSON 键。 它不会创建新密钥。
注意
仅在生成和发布管道中定义的自定义变量用于替换。 排除默认和系统管道变量。
下面是当前排除的前缀的列表:
agent.
azure_http_user_agent
build.
common.
release.
system.
tf_
如果在发布管道和阶段中定义了相同的变量,则阶段定义的变量将取代管道定义的变量。
另请参阅: 文件转换和变量替换引用。
示例
如果需要 XML 转换在具有 pattern .Production.config
的所有名为 的配置文件上运行,则应将转换规则指定为:
-transform **\*.Production.config -xml **\*.config
如果具有基于管道中的阶段名称命名的配置文件,则可以使用:
-transform **\*.$(Release.EnvironmentName).config -xml **\*.config
若要替换嵌套或分层的 JSON 变量,请使用 JSONPath 表达式指定它们。
例如,若要替换以下示例中 ConnectionString 的值,必须将生成或发布管道 (或发布管道) 中的阶段中的变量 Data.DefaultConnection.ConnectionString
定义为 。
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
}
}
}
要求
要求 | 说明 |
---|---|
管道类型 | YAML、经典版本、经典版本 |
运行平台 | Agent、DeploymentGroup |
需求 | 无 |
功能 | 此任务不满足作业中后续任务的任何要求。 |
命令限制 | 任意 |
可设置变量 | Any |
代理版本 | 所有支持的代理版本。 |
任务类别 | 实用工具 |