当使用星号时,是什么导致程序集版本增加?

12

如果我有一个类似于这样的程序集版本:

[assembly: AssemblyVersion("2013.7.18.*")]

当读取版本号时,它通常是类似于2013.7.18.123这样的格式。

是什么导致了最后一个数字的增加?

2个回答

20

该版本号并不会递增,因为构建系统无法知道上一个版本号,所以它没有这种知识。你实际上得到的是一个随机数。它不是完全随机的,修订号是根据时间生成的。构建号也可以随机化,它是根据日期生成的。

请注意使用2013.7.18.*的后果,您无法保证它是唯一的。如果您在完全相同的时间进行构建,则会得到完全相同的数字。它也不会自动成为一个更大的版本号,如果您先构建,则会回退版本号。这些不是版本号的好属性。

换句话说,只使用1.0.*是有意义的,这将生成一个始终递增的版本号,因为构建号将始终较大。

值得注意的是,您确实尝试将日期放入版本号中。如果您让它选择构建号,您已经获得了此功能,您始终可以从结果反向工程构建日期。构建号是自2000年1月1日以来的天数,修订号是午夜以来的秒数(不考虑DST),除以二。


0

AssemblyVersionAttribute类

您可以指定所有值,也可以使用星号()接受默认的构建号、修订号或两者都接受。例如,[assembly:AssemblyVersion("2.3.25.1")] 表示 2 为主版本,3 为次版本,25 为构建号,1 为修订号。版本号如 [assembly:AssemblyVersion("1.2.")] 指定 1 为主版本,2 为次版本,并接受默认的构建和修订号。版本号如 [assembly:AssemblyVersion("1.2.15.*")] 指定 1 为主版本,2 为次版本,15 为构建号,并接受默认的修订号。默认的构建号每天递增。默认的修订号是随机的。


2
是的,智者多谋,如果您能告诉这位善良的读者,您认为引用(追溯至三年前)的文档中哪一部分是错误的,那么您的评论将会非常有帮助。 - JeffRSon
正如在其他答案中提到的那样,主要是“默认修订号是随机的。”和建议使用“[assembly:AssemblyVersion("1.2.15.*")]”(如果修订号被星号掩盖,则会导致奇怪的错误)。 - habakuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接