git - TFS 构建定义与同一项目的多个构建和 app.config 之间的变化
问题描述
我正在处理TFS上的构建定义。当前处理此项目问题的方法是触发构建,获取部署的设置文件,然后更改app.config中的设置(要使用的产品的多个区域,它只是一个更改的值),并且手动触发另一个构建。这对每个区域重复。我正在尝试自动化这个过程,我的方法是使用Powershell内联脚本构建步骤来更改 app.config 中的值并重复“构建解决方案”和“复制发布工件”构建步骤。我得到的错误是:
构建 X 的工件安装程序已经存在。
有更好的方法吗?我不太熟悉 TFS 构建定义的可能性。
编辑:
构建现在运行,问题是 Powershell 脚本似乎没有生效,但我已经在它编辑文件的其他地方对其进行了测试。检查放置位置,有多个相同的安装文件。是否需要重新签出并再次签入或其他什么?
这是脚本:
(get-content $(Build.SourcesDirectory)\Source\projectname\app.config) |
Foreach-Object {$_ -replace "$ServerRegionCE","$ServerRegionUK"} |
set-content $(Build.SourcesDirectory)\Source\projectname\app.config
解决方案
问题是Powershell脚本似乎没有生效
根本原因是被引用变量的语法不正确。
在 PowerShell 脚本中,您需要使用变量$env:BUILD_SOURCESDIRECTORY
而不是$(Build.SourcesDirectory)
它也适用于自定义变量。因此,如果您定义了变量$ServerRegionCE
并$ServerRegionUK
在构建过程中,那么您可以像以下格式一样使用它们:
$env:ServerRegionCE
和$env:ServerRegionUK
有关详细信息,请参阅使用变量。
因此,只需尝试以下脚本:
(get-content $env:BUILD_SOURCESDIRECTORY\Source\projectname\app.config) |
Foreach-Object {$_ -replace "$env:ServerRegionCE","$env:ServerRegionUK"} |
set-content $env:BUILD_SOURCESDIRECTORY\Source\projectname\app.config
推荐阅读
- java - 需要帮助在 Java 中使用子字符串方法
- asp.net - ASP.NET Core 3.1 + Angular 9 基于角色的身份验证
- vue.js - 如何通过 VueJS 中的操作访问商店?
- inno-setup - Inno 下载插件 - 可调整大小?
- bash - 通过调用父文件夹名称运行脚本
- apache-spark - 为什么 Spark Structured Streaming 作业中缺少来自 StreamingQueryListener 的 QueryProgressEvent 日志?
- node.js - 如何使我的 node.js 应用程序可公开访问?
- javascript - 为什么在这个 javascript 代码段提升问题上打印 10
- java - 为什么“not”运算符不起作用(布尔值)?
- javascript - 针对数据库验证数据列表,然后阻止表单提交