Ive*_*aev 5 delphi parsing auto-versioning compilation-time delphi-xe2
在Delphi XE2中,自动生成的构建号功能现在使用某种日期和时间生成的值,如下所示:
2.4.4386.838
每次构建时最后两个数字都会更改,并且基于当前日期和时间:
Major = 2 (user defined)
Minor = 4 (user defined)
Release = 4386 (number of days since Jan 1 2000)
Build = 838 (number of seconds since 00:00:00)
Run Code Online (Sandbox Code Playgroud)
我想这个发布和构建数字的新格式是从.NET实现中借用的,它实现了非常相似的功能.在.net中,最后一个数字(Build)等于自当地时间午夜以来的秒数除以2.有关.net实现的详细信息,请参阅此链接:艰难地确定构建日期
如果可以依靠这种方式保持这种方式,那么现在我们有更好的方法来确定编译时间而不是
使用IDE插件
使用PE Headers hacks
问题不在于如何返回旧的自动增量版本号功能.
问题是 XE2是否确实使用了上面显示的日期和时间,从2010年1月1日开始,在Build和Release数字中添加了几天和几秒?
编码不能像你想象的那样.发布和数字打包成一个32位DWORD.这意味着一天中只有16位可用于所有秒.一天有86400秒,大于2 16.
相当奇怪的是,Delphi实现似乎在它达到2 16秒,约18.2小时时回绕.所以目前在我的时区(UTC)是22:50,但是自动生成的版本号是16753,或大约4.6小时.加上从环绕和宾果游戏中失踪的18.2小时,这是22:50.
它看起来像Visual Studio人们做对了,因为它们在00:00之后花了几秒钟除以2.因此也会出现Delphi自动生成的版本号不会随时间单调增加,也不会独特的等等.
在我看来这是一个我作为QC#102343提交的错误.请注意,该错误是在XE2 update 3中引入的.它在以前的版本中不存在.另请注意,版本号的处理已从更新2更改为更新3.
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |