Git TFS生成定义,其中包含同一项目的多个生成以及其间的app.config更改

Git TFS生成定义,其中包含同一项目的多个生成以及其间的app.config更改,git,tfs,azure-devops,Git,Tfs,Azure Devops,我正在TFS上进行构建定义。当前处理此项目问题的方法是触发生成,获取已部署的安装文件,然后在app.config多个区域中更改要使用的产品的设置,更改的只是一个值,然后手动触发另一个生成。对每个区域重复此操作。 我正在尝试自动化此过程,我的方法是使用Powershell内联脚本构建步骤来更改app.config中的值,并重复构建解决方案和复制发布工件构建步骤。我得到的错误是: 构建X的工件安装程序已存在 有没有更好的方法?我不太熟悉TFS构建定义的可能性 编辑: 构建现在正在运行,问题是Powe

我正在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\u SOURCESDIRECTORY而不是$BUILD.SOURCESDIRECTORY

它也适用于自定义定义的变量。因此,如果在构建过程中定义了变量$ServerRegionCE和$ServerRegionUK,则可以使用如下格式:

$env:serverregionone和$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
使用解决方案更新: 我把powershell脚本扔掉了,我想做什么就做什么。Andy Li MSFT发布它的方式应该是可行的,但我添加了一个拷贝文件构建步骤,该步骤在构建解决方案之前运行。我在源代码中创建了文件夹,每个服务器区域特定的文件夹都包含相应的app.config,在构建和部署项目之前要复制到项目源代码中

看起来是这样的:


在本例中,如果您显然需要在内容字段中指定其他文件,则UnitedKingdom_Config文件夹中只有app.Config。更好的方法是查看devops Practices可以为您提供什么。这意味着:1。在app.config文件中构建一个包含无用值的包。2.使用类似OctopusDeploy的发布工具进行部署,该工具将根据您要部署的位置替换app.config中的值。我意识到有一些扩展,例如Octopus,可以非常有效地实现这一点。我试图找到一个不使用额外TFS扩展的简单解决方案,因为如果不咨询管理员,我无法添加它们。我认为只使用powershell脚本会更容易,因为更改非常小。我明白了,我偶然发现了这种语法,但我可以发誓它在测试项目中与我的语法一起工作。无论如何,我现在使用复制文件构建步骤使其工作,这样我就可以在每次构建之前复制所需的app.config文件。您认为powershell变体是更好的解决方案吗?@tweedledum11不,只是解决您在问题中提到的问题。这些解决方案修改文件或将文件复制到源目录以替换上一个文件具有相同的效果。复制文件更容易。。好吧,你可以把你的解决方案作为答案贴出来,然后接受它。这对阅读此帖子的其他社区成员是有益的。今天我将在某个时候更新我的问题,并在更新的脚本旁边提供我的解决方案,无论如何感谢您的帮助!重命名此tfs构建定义中已部署的安装文件的问题是否需要一个全新的问题?@tweedledum11是的,任何新主题您最好创建一个新线程来跟踪新问题。