使用星号时是啥导致程序集版本增加?
Posted
技术标签:
【中文标题】使用星号时是啥导致程序集版本增加?【英文标题】:What causes Assembly Version incrementation when using asterisk?使用星号时是什么导致程序集版本增加? 【发布时间】:2013-07-17 04:47:29 【问题描述】:如果我有一个汇编版本,例如:
[assembly: AssemblyVersion("2013.7.18.*")]
读取此版本号时,将类似于2013.7.18.123
。
是什么导致最终数字递增?
【问题讨论】:
【参考方案1】:它不递增,这需要构建系统知道以前的版本。它没有这样的知识。你基本上得到一个随机数。这不是随机的,修订号是从一天中的时间生成的。内部版本号也可以是随机的,它是从日期生成的。
请注意使用2013.7.18.*
的后果,您无法保证它是唯一的。如果您曾经在完全相同的时间构建,那么您将获得完全相同的数字。它也不会自动成为一个更大的 版本号,更早构建,你会倒退。这些不是版本号的重要属性。
或者换句话说,只有使用1.0.*
才有意义,它会生成一个始终增加的版本号。因为内部版本号总是会更大。
还值得注意的是,您确实尝试将日期放在版本号中。你已经明白了,如果你让它选择内部版本号,你总是可以从结果中对构建日期进行逆向工程。内部版本号是自 2000 年 1 月 1 日以来的天数,修订版号是自午夜以来的秒数(没有 DST 更正)除以 2。
【讨论】:
【参考方案2】:AssemblyVersionAttribute Class:
您可以指定所有值,也可以使用星号 () 接受默认内部版本号、修订号或两者。例如,[assembly:AssemblyVersion("2.3.25.1")] 表示 2 为主要版本,3 为次要版本,25 为内部版本号,1 为修订号。诸如 [assembly:AssemblyVersion("1.2.")] 的版本号指定 1 作为主要版本,2 作为次要版本,并接受默认的构建和修订号。诸如 [assembly:AssemblyVersion("1.2.15.*")] 的版本号指定 1 作为主要版本,2 作为次要版本,15 作为内部版本号,并接受默认修订号。默认内部版本号每天递增。默认修订号是随机的。
【讨论】:
是的,Wisenheimer 先生,如果您能启发好心的读者,您认为引用文档的哪一部分(截至三年前)是错误的,您的评论会很有帮助。 如前所述,您可以在其他答案中阅读。主要是The default revision number is random.
和建议的[assembly:AssemblyVersion("1.2.15.*")]
(如果修订被星号掩盖,则会导致奇怪的错误)。以上是关于使用星号时是啥导致程序集版本增加?的主要内容,如果未能解决你的问题,请参考以下文章
Azure DevOps Build Pipeline:如何仅为更改的程序集增加程序集版本?
在 SemVer 中,当向公众发布测试版时,程序集+文件版本应该是啥? [关闭]