为啥区分 AssemblyFileVersion 和 AssemblyVersion

Posted

技术标签:

【中文标题】为啥区分 AssemblyFileVersion 和 AssemblyVersion【英文标题】:Why differentiate AssemblyFileVersion and AssemblyVersion为什么区分 AssemblyFileVersion 和 AssemblyVersion 【发布时间】:2021-04-25 14:02:47 【问题描述】:

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

我得到了 AssemblyInformationalVersion abd 的想法,我理解这样一个事实,即当 CLR 加载程序集时,它只关心 AssemblyVersion,并且根据这篇帖子 https://***.com/a/802038/9623401 的答案:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于为啥区分 AssemblyFileVersion 和 AssemblyVersion的主要内容,如果未能解决你的问题,请参考以下文章

AssemblyVersion,AssemblyFileVersion和AssemblyInformationalVersion之间有什么区别?

为啥 mysql 区分大小写

oracle为啥区分大小写?

为啥 cookie 路径区分大小写?

为啥 Get-ItemProperty 不区分大小写但 Set-ItemProperty 区分大小写?

SQL Server:为啥不区分大小写的列上的 SELECT 比区分大小写的列更快?