首页 > 解决方案 > 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

标签: gittfsazure-devops

解决方案


问题是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

推荐阅读