【问题标题】:Modify setting in web.config on TFS build在 TFS 构建上修改 web.config 中的设置
【发布时间】:2014-07-22 20:49:08
【问题描述】:

是否可以在 Team Foundation Server 构建期间修改我的一个项目中的 web.config 文件?在我的 web.config 文件中,我有两个设置键:VersionNumber 和 BuildNumber。

是否可以根据 TFS 中构建的 ID 更改 BuildNumber 的值?

【问题讨论】:

  • 您想在内部版本号中添加什么?
  • @DaveShaw TFS 构建的 ID。例如:每当您启动 TFS 构建时,它都有一个构建 ID。我运行的最后一个版本的 ID 为 6030。

标签: tfs msbuild tfsbuild


【解决方案1】:

由于您使用的是 TFS 2013,因此您有一个比修改工作流的旧方法更简单的选择 - 使用 PowerShell。

如果您使用的是构建模板 TfvcTemplate.12.xaml(这是 TFS 2013 中的新默认值),那么您可以设置一些额外的构建定义参数来指定要运行的 Powershell 脚本。这样,您只需编写一点 powershell 代码即可获取 TFS 内部版本号(来自环境变量),然后找到您的 web.config 文件并更改它们。

在 TFS 社区构建扩展项目中发布了一个示例脚本,该脚本将执行非常相似的操作,您可以对其进行修改。它查找所有 AssemblyInfo.cs 文件,然后使用 RegEx 修改它们以根据 TFS 内部版本号更新内部版本号。

在此处查看示例 PS 脚本:https://tfsbuildextensions.codeplex.com/SourceControl/latest#Scripts/ApplyVersionToAssemblies.ps1

在此处查看有关如何修改构建以运行 PowerShell 的一些文档:http://msdn.microsoft.com/en-us/library/dn376353.aspx

【讨论】:

  • 感谢您的信息!我很高兴听到它现在已集成。我为 2012 年编写了自己的 powershell 运行程序。
  • 你为什么要自己写?多年来,这一直是 TFS 社区构建工具的一部分。 tfsbuildextensions.codeplex.com
【解决方案2】:

答案是肯定的,尽管这很重要。我过去使用两种方法做到了这一点。

方法 1:使用 CodeActivities 并更改 TFS 构建工作流 XAML 文件以将新的 CodeActivity 作为工作流步骤包含在内。

这是一篇关于使用自定义代码活动创建自定义工作流的文章(有点过时但仍然相关):

http://blogs.msdn.com/b/jimlamb/archive/2010/02/12/how-to-create-a-custom-workflow-activity-for-tfs-build-2010.aspx

基本上,您创建一个继承自 CodeActivity 的新对象,为您的输入创建属性(BuildNumber、VersionNumber、TargetFile),在 TargetFile 上执行您的操作并保存它。然后,您将这个新的 DLL 与您的活动连接到 TFS 工作流 XAML,在所需的构建步骤中注入您的活动(在您的情况下,我打赌构建后和预打包以确保应用 xml 转换)。

方法二: 将所需的属性标记到 TFS XAML 文件内的 MSBuild 调用上,以便将它们传递到 MSBuild 并可用作 $(BuildNumber) 和 $(VersionNumber)。然后,您可以使用 MSBuild 任务在正确的时间将属性注入到文件中。

【讨论】:

    猜你喜欢
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多