以下是我们正在研究的开发环境:
我们想要开始的是在部署中对版本号进行某种跟踪。这里的主要原因是非开发人员能够查看生产系统上的某些内容,并且至少知道生成它的源代码控制版本,跟踪我们的票务系统中的版本号等。
我的第一个想法是使用Major.Minor.Build版本号方案在构建时(通过Rake脚本,我想象)标记每个程序集。我们可以在Rake脚本中手动设置Major和Minor,这些不会经常更改,并使用当前的SVN修订版号作为Build。
有更好的方法吗? Build编号是否会因为旧版主干版本的标记构建而变得混乱?有关此事的任何想法或建议?也许有一个工具在某个地方已经做得相当好了?
答案 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页面获取完整列表。
有关长鳍金枪鱼的更多信息,请参阅以下资源: