请注意,从 2010 年开始,Tfs 使用 Windows 工作流来构建包,工作流调用 msbuild 仅用于编译项目 - 虽然它可以通过这种方式传递变更集来 msbuild 其相当多的跃点。以下处理您的问题,但是所需的链接解决方案更复杂:
程序集版本是否可以随每个 TFS 2010 构建自动更新?
这是关于自定义构建活动的最佳系列教程之一,我相信作者也在堆栈上,特别是关于版本控制
http://www.ewaldhofman.nl/post/2010/05/13/Customize-Team- Build-2010-e28093-Part-5-Increase-AssemblyVersion.aspx
简而言之,您需要在编译源文件之前运行自定义活动,找到所有 CommonAssemblyInfo.cs 文件,将此列表提供给您的自定义活动,它会使用完整版本号的传递值或仅更改集和可选签入来修改内部的值更改(可能不会,因为那时您的更改集将不同步)。
您还可以查看https://tfsbuildextensions.codeplex.com/活动集,其中有 TfsVersion 活动,至少它会提供示例。
对此的功能需求应该可以通过团队资源管理器和源代码控制获得 - 自定义活动程序集和构建模板通常位于团队项目根目录中的文件夹中 - 此文件夹的位置是为构建控制器定义的,您可以通过团队资源管理器构建来更改它部分。
变更集可从值 BuildDetail.SourceGetVersion 获得,不确定这是否已在 2012 年修复/更改,但是在 2010 年有关于此值的 2 个问题
- 它不尊重默认构建模板中的 GetVersion 覆盖 - 如果使用覆盖,您将需要手动更新
- 运行最新版本(无覆盖)时,它将从 tfs 获取最后一个变更集编号 - 根据您的分支,这可能与构建分支的“最后一个”变更集不同。您将不得不忍受这一点,为每个构建提供覆盖或实施检查分支历史记录以获取最后一个变更集值并再次覆盖它的活动。
应该注意的是,GetVersion 应该能够接受任何 sourcespec 版本 - 变更集、日期、标签等。我还没有充分利用这一点来为您提供更多详细信息。