新的Delphi XE2自动生成的内部版本号是否链接到1.1.2000 00:00:00?

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实现的详细信息,请参阅此链接:艰难地确定构建日期

如果可以依靠这种方式保持这种方式,那么现在我们有更好的方法来确定编译时间而不是

  1. 使用IDE插件

  2. 使用PE Headers hacks

问题不在于如何返回旧的自动增量版本号功能.

问题 XE2是否确实使用了上面显示的日期和时间,从2010年1月1日开始,在Build和Release数字中添加了几天和几秒?

Dav*_*nan 7

编码不能像你想象的那样.发布和数字打包成一个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.

  • @allen但如果有任何工具可以快速编译2s周转,那就是delphi !!! (4认同)