版本号控制的想法

时间:2010-06-25 15:04:37

标签: .net svn version-control rake

以下是我们正在研究的开发环境:

  1. 主要是.NET(主要是C#)
  2. Visual Studio 2008中的开发
  3. SVN中的源代码控制(VisualSVN服务器,Tortoise客户端)
  4. 使用Rake脚本控制的MSBuild / MSDeploy部署
  5. 我们想要开始的是在部署中对版本号进行某种跟踪。这里的主要原因是非开发人员能够查看生产系统上的某些内容,并且至少知道生成它的源代码控制版本,跟踪我们的票务系统中的版本号等。

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

    有更好的方法吗? Build编号是否会因为旧版主干版本的标记构建而变得混乱?有关此事的任何想法或建议?也许有一个工具在某个地方已经做得相当好了?

1 个答案:

答案 0 :(得分:3)

因为你已经在构建中使用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页面获取完整列表。

有关长鳍金枪鱼的更多信息,请参阅以下资源: