在TFS构建中修改web.config中的设置

时间:2014-07-22 20:49:09

标签: tfs msbuild tfsbuild tfs2013

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

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

2 个答案:

答案 0 :(得分:4)

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

如果您正在使用构建模板TfvcTemplate.12.xaml(这是TFS 2013中的新默认值),那么您可以设置一些额外的构建定义参数来指定要运行的Powershell脚本。这样你只需编写一些获得TFS内部版本号的PowerShell代码(来自环境变量),然后找到你的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

答案 1 :(得分:1)

答案是肯定的,尽管这不是一件容易的事。我过去使用两种方法完成了这项工作。

方法1 :使用CodeActivities并更改TFS Build工作流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 Workflow XAML,在所需的构建步骤中注入您的活动(在您的情况下,我打赌后期构建和预打包以确保应用xml转换)。

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