代码之家  ›  专栏  ›  技术社区  ›  David

版本号控制的思路

  •  1
  • David  · 技术社区  · 15 年前

    以下是我们正在关注的开发环境:

    1. 主要是.NET(主要是C)
    2. visualstudio2008中的开发
    3. SVN中的源代码管理(VisualSVN服务器、Tortoise客户端)

    我们希望开始对部署中的版本号进行某种跟踪。这里的主要理由是非开发人员能够查看生产系统上的某些内容,至少知道是什么源代码管理修订版生成的,跟踪我们的票务系统中的版本号,等等。

    我的第一个想法是在构建时使用Major.Minor.build版本号方案标记每个程序集(我可以想象,通过Rake脚本)。我们可以在Rake脚本中手动设置Major和Minor,它们不会经常更改,并使用当前的SVN版本号作为构建。

    有没有更好的办法?从一个旧的主干修订版的标签上构建,是否会混淆构建号?对这件事有什么想法或建议吗?也许某个地方有个工具已经做得很好了?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Derick Bailey    15 年前

    既然您已经在使用rake进行构建,我想指出的是Albacore框架,它使得在构建时对程序集进行版本控制非常容易。

    http://github.com/derickbailey/Albacore

    我们为rake提供了一个“assemblyinfo”任务,允许您指定所需的任何程序集级属性-c#或vb.net。例如:

    desc "Run a sample assembly info generator"
    assemblyinfo :assemblyinfo do |asm|
      asm.version = "0.1.2.3"
      asm.company_name = "a test company"
      asm.product_name = "a product name goes here"
      asm.title = "my assembly title"
      asm.description = "this is the assembly description"
      asm.copyright = "copyright some year, by some legal entity"
      asm.custom_attributes :SomeAttribute => "some value goes here", :AnotherAttribute => "with some data"
      asm.output_file = "lib/spec/support/AssemblyInfo/AssemblyInfo.cs"
    end
    

    你可以看到 asm.version

    asm.version = "1.2.3.#{svnrevision}"

    另外还有一个msbuild任务,它使调用msbuild变得非常简单,除此之外还有大约20个任务。有关完整列表,请参见github上的wiki页面。

    有关albacore的更多信息,请参阅以下参考资料: