该的AssemblyVersion和的AssemblyFileVersion属性是处理版本号为.NET程序集的内置方式.虽然框架提供了自动确定版本号(构建和修订,在Microsoft术语中)中最不重要部分的能力,但我发现这种方法相当薄弱,而且毫无疑问还有许多其他方法.
所以我想问一下,有哪些方法可以确保最好地使用更好地反映项目实际版本的版本号?您是否有预构建脚本将版本的一部分设置为日期和时间,或者是项目工作副本的存储库版本?您是否只使用框架提供的自动生成?或者是其他东西?管理汇编/文件版本控制的最佳方法是什么?
我在这里看到许多关于使用subversion版本号作为程序集版本的组件的帖子.注意:Windows(abcd)中可用的4个版本号均限制为16位(最大值= 65535).subversion版本号很容易超过此限制,尤其是在同一存储库中托管多个项目时.
在我当前的项目中,我们使用Subversion修订版号作为版本号的最不重要(构建)部分,我们使用Nant脚本来创建项目AssemblyInfo文件.我们对AssemblyVersion和AssemblyFileVersion属性使用相同的版本号.(其他三个部分是major.minor.point,其中major.minor将在每次数据库模式更改时递增,并且每个版本的点都会递增.)
我们开始时只是增加了构建号,但这要求为每个构建签入版本文件,并在合并时引起冲突.当证明不可行时,我们开始使用CruiseControl.NET生成构建号,但这使得难以手动重现特定构建.最终我们进入了当前的(Subversion-revision)计划.
注意:遗憾的是,使用.NET时,无法从过去的修订版中完美地重新构建构建,因为.NET编译器在编译时将当前时间戳编码到目标文件中.每次编译相同的代码时,都会得到一个不同的目标文件.