我想知道是否有一种方法来同步内部版本号(20080213.1)而不使用BuildNumberOverrideTarget,我将不得不生成我自己的内部版本号?我基本上想使用默认的/内置的tfs buildnumber生成器,但想访问它以使我的程序集版本与它对齐。这可以做到吗,这是一种明智的做法吗?对齐程序集版本号与TFS Buildnumber
13
A
回答
8
是的,你可以。在某些情况下,可能在AfterGet中,您可以使用BuildNumber并创建一个自定义任务来更新源代码中的AssemblyInfo.cs文件。
我们已经勾搭成AfterGet,造成我们的目标是依赖:
<Target Name="AfterGet" DependsOnTargets="VersionAssemblies" />
我们VersionAssemblies目标翻出所有从$的AssemblyInfo.cs中的文件(SolutionRoot)的:
<CreateItem Include="$(SolutionRoot)\**\AssemblyInfo.cs;">
<Output TaskParameter="Include" ItemName="AssemblyInfos"/>
</CreateItem>
检查他们出:
<Exec Command="$(TfCommand) checkout "AssemblyInfo.cs" -r"
WorkingDirectory="$(MSBuildProjectDirectory)\..\sources" ContinueOnError="true"/>
编辑它们并用$替换文件版本(Buil dNumber):
<File.Replace Path="%(AssemblyInfos.FullPath)"
NewValue="AssemblyFileVersion("$(BuildNumber)")"
RegularExpression="AssemblyFileVersion\(\"(\d+.\d+.\d+.\d+)\"\)"
IgnoreCase="true"
Force="true"/>
,然后检查文件回:
<Exec Command="$(TfCommand) checkin /override:"Automated" /comment:"Update AssemblyInfo files to version number $(BuildNumber) - $(NoCICheckinComment) " /noprompt "AssemblyInfo.cs" /recursive"
WorkingDirectory="$(MSBuildProjectDirectory)\..\sources" ContinueOnError="false"/>
有关更换我用自带的CodePlex上,基于微软SDC tasks的File.Replace任务的文件版本。
另外请注意,如果您有一个在签入时触发的构建,在检查AssemblyInfo.cs文件时,请确保注释包含$(NoCICheckinComment),因为这会导致TFS不触发另一个构建,我将最终进入无限的构建循环。
9
你所要求的是非常明智的,有很多方法可以实现这一点。
个人而言,当我这样做时,我不喜欢检查文件到版本控制中,这些文件中包含构建服务器生成的编号 - 它只是在跨分支合并代码时引入了太多的头疼,但我也喜欢当开发人员执行工作站构建时使用的已知版本号与适当的构建服务器派生程序集以使它们很容易分开。
欲了解更多关于如何我喜欢这样做,看看在TFS构建Recipies维基:
或在话题
希望有所帮助,
Martin。
相关问题
- 1. TFS构建程序集版本冲突
- 2. Get TFS buildNumber
- 3. 让TeamCity将Subversion版本号集成到程序集版本
- 4. TFS 2008:如何将版本名称与版本号码同步?
- 5. TeamCity内部版本号与Ant版本号任务
- 6. TFS旧版本TFS变更集历史
- 7. 跟踪的程序与版本一起集结号
- 8. .NET版本号(安装程序版本)
- 9. TFS构建覆盖使用不正确版本的程序集
- 10. SQLcontext与spark-core版本对齐
- 11. .NET程序集版本
- 12. TFS和带有上次更改集的msbuild版本号
- 13. 对齐旧的Android版本
- 14. TFS。更改编号。 “获取版本”
- 15. TFS:管理组件版本号?
- 16. Flash IDE版本控制 - TFS 2008集成?
- 17. 为什么不同版本的Silverlight程序集具有相同的版本号?
- 18. 排序应用程序版本号
- 19. 带有神器的触发器TFS版本管理版本号
- 20. 通过带有版本号的TFS重建历史版本
- 21. Subversion版本控制与TFS错误跟踪的集成
- 22. TFS 2010不再将更改集与版本相关
- 23. 它的网站使用的程序集版本号列表
- 24. 更新解决方案中所有程序集的版本号
- 25. 如何让C#项目忽略程序集的版本号?
- 26. .NET程序集名称是否应包含版本号?
- 27. C#:如何设置程序集的版本号
- 28. 如何在构建后修改程序集的版本号?
- 29. 在生成后事件中阅读程序集版本号?
- 30. 加载签名程序集的版本号时要小心
如何从$(BuildNumber)中获取构建版本和修订版本,默认为“MyBuildDefinition_20090213.1”格式? – Fadeproof 2009-02-13 11:32:12
您可以编写一个自定义任务以去除MyBuildDefinition_部分并将其去掉。 – 2009-02-13 11:33:19