Visual studio 2008 CruiseControl.NET自动生成版本号

Visual studio 2008 CruiseControl.NET自动生成版本号,visual-studio-2008,cruisecontrol.net,versioning,nant,Visual Studio 2008,Cruisecontrol.net,Versioning,Nant,这是一个复杂的问题,所以我希望我能解释清楚 背景 我正在使用CruiseControl.NET和NAnt自动化构建过程。我遇到的最头疼的问题是版本号格式和CruiseControl.NET在运行构建项目之前需要标签机提供标签 目前,开发人员运行VisualStudio2008来生成调试、发布和自定义生成。每个配置都调用BuildInc(一个自定义工具),该工具读取文件(version.ver),增加读取的版本号,为可执行属性生成一个.rc2文件,并将新版本写回version.ver。显然,ver

这是一个复杂的问题,所以我希望我能解释清楚

背景

我正在使用CruiseControl.NET和NAnt自动化构建过程。我遇到的最头疼的问题是版本号格式和CruiseControl.NET在运行构建项目之前需要标签机提供标签

目前,开发人员运行VisualStudio2008来生成调试、发布和自定义生成。每个配置都调用BuildInc(一个自定义工具),该工具读取文件(version.ver),增加读取的版本号,为可执行属性生成一个.rc2文件,并将新版本写回version.ver。显然,version.ver和.rc2发生了变化,在开发人员在源代码管理中标记版本之前,需要检查源代码的备份。源代码管理中的标签是版本号,即1.2.3.4->1-2-3-4

目前,新的自动构建触发了一个CruiseControl.NET项目,该项目调用NAnt脚本。NAnt脚本运行VisualStudio并将生成发布到发布目录。这很好,NAnt脚本可以通过读取version.ver获得以前和新的版本号。问题是让CruiseControl.NET标记源并在仪表板上显示标签。新版本号/标签是在生成过程中生成的,要增加的版本号/标签保存在Visual Studio项目中的pre-link tasks参数中

版本号

版本号是一种独特的格式,在主干和开发分支上完成的构建之间是不同的。在分支上完成的构建用于在完成时合并回主干的增强功能

树干

  • 格式:[主要].[合并].[发布].00即42.01.02.00
  • 专业:系统号
  • 合并:如果合并分支,则增加
  • 发布:错误修复后增加
分支机构

  • 格式[Major].00.[Stream].[Release]即42.00.01.01
  • 专业:系统号
  • 流:流编号,将其链接到其他组件以进行增强
  • 发布:错误修复后增加
数字的前缀为零,即01、02。这对我遇到的任何工具都不起作用。(我希望改变这一点)

问题

毕竟我希望你能理解我的问题

  • 我可以对自动化流程进行哪些总体改进
  • 您认为在开始构建之前应该知道版本号吗
  • 自动生成系统是否应该自动增加版本号
  • 我应该考虑改变版本号格式吗?< /LI>
  • 任何其他意见,我真的需要更多的意见
  • 如果需要更多信息,请告诉我

    注释


    语言是C++,平台是Windows,源代码是CVS。< /P> < P>可以将一个生成后事件添加到项目中,它将在源文件夹中把最新的构建号(不管您想要的格式)写入文本文件,比如Label.txt。 然后添加fileLabeller类型标签以获取最新版本号,该版本号将从label.txt获取

    <labeller type="fileLabeller">
       <labelFilePath>ProjectFolder\label.txt</labelFilePath>
       <allowDuplicateSubsequentLabels>true</allowDuplicateSubsequentLabels>
    </labeller>
    
    
    ProjectFolder\label.txt
    真的
    
    您可以向项目中添加生成后事件,该事件会将最新的生成编号(以您想要的任何格式)写入源文件夹中的文本文件,例如label.txt

    然后添加fileLabeller类型标签以获取最新版本号,该版本号将从label.txt获取

    <labeller type="fileLabeller">
       <labelFilePath>ProjectFolder\label.txt</labelFilePath>
       <allowDuplicateSubsequentLabels>true</allowDuplicateSubsequentLabels>
    </labeller>
    
    
    ProjectFolder\label.txt
    真的
    
    您是否在巡航控制.net中为分支和主干创建单独的项目?是的,主干项目将继续运行,而分支项目将根据需要添加和删除。您是否在巡航控制.net中为分支和主干创建单独的项目?是的,主干项目将继续运行,然而,分支项目将根据需要进行添加和删除。但是文档中说“文件是在第一个预构建任务执行之前读取的”,那么这是否有效呢?我的意思是,如果您从VisualStudio运行代码,它将在文本文件中创建标签,并将此文件与源代码一起提交。因此,在下一个ci构建中,它将在文本文件中显示标签啊,是的,我明白了。我更多地考虑我的构建,在构建开始之前,构建编号是未知的(void的问题2)。感谢您的澄清。但是文档中说“文件是在第一个预构建任务执行之前读取的”,那么这样做行吗?我的意思是,如果您从VisualStudio运行代码,它将在文本文件中创建标签,并将此文件与源代码一起提交。因此,在下一个ci构建中,它将在文本文件中显示标签啊,是的,我明白了。我更多地考虑我的构建,在构建开始之前,构建编号是未知的(void的问题2)。谢谢你的澄清。