为什么要区分 AssemblyFileVersion 和 AssemblyVersion

Why differentiate AssemblyFileVersion and AssemblyVersion

我们知道一个程序集有3个版本号与之关联,分别是AssemblyFileVersion、AssemblyInformationalVersion和AssemblyVersion

我明白了 AssemblyInformationalVersion 的想法,我知道当 CLR 加载一个程序集时,它只关心 AssemblyVersion,并且根据这个 post 的回答:

AssemblyFileVersion 旨在唯一标识单个程序集的构建

但是两者都是Major.Minor.Build.Revision格式,那AssemblyFileVersion和AssemblyVersion不是一回事吗?

假设我从头开始构建一个程序集,几天后,工作似乎完成了,所以我将 AssemblyVersion 更改为 1.0.0.0,然后我将代码提交到构建服务器,构建服务器应该更新内部版本号,因此存储库中程序集的 AssemblyVersion 将为 1.0.1.0,AssemblyFileVersion 也应该为 1.0.1.0

我的理解对吗?如果不正确,如果有人可以根据我的上述情况进行解释,我将不胜感激?

.NET 使用您提到的 AssemblyVersion 来加载正确的程序集。程序集文件版本只是 Windows Explorer 使用的文件版本。 .NET 不以任何方式使用它。因此,如果您进行更改,例如在日常构建中,您通常只想增加程序集文件版本,而不是程序集版本,以避免现有引用中断。 这个link给出了很好的解释: https://docs.microsoft.com/en-us/troubleshoot/visualstudio/general/assembly-version-assembly-file-version