如果你去:
解决方案资源管理器 --> 属性 -->(双击)程序集信息
您将看到有关项目程序集的一些信息。最后,每个程序集都有一些不同的版本:
- 主要版本
- 次要版本
- 内部版本号
- 修订
我明白这些是其中的数字:
[程序集:AssemblyVersion("1.0.0.0")]
[程序集:AssemblyFileVersion("1.0.0.0")]
但我不明白意思。
如果你去:
解决方案资源管理器 --> 属性 -->(双击)程序集信息
您将看到有关项目程序集的一些信息。最后,每个程序集都有一些不同的版本:
我明白这些是其中的数字:
[程序集:AssemblyVersion("1.0.0.0")]
[程序集:AssemblyFileVersion("1.0.0.0")]
但我不明白意思。
构建项目时,这些值将被烘焙到 dll 中,因此当您通过 Windows 文件系统查看 dll 的属性时,您将看到该版本号。
管理这些数字有点让人头疼。在较旧的项目中,您经常会看到一些丑陋的构建脚本,这些脚本执行诸如签出文件然后递增编号然后签入然后继续构建...我见过的最优雅的解决方案是由 TeamCity 实现的(尽管可能有类似的产品);它基本上将所有项目文件复制到您的构建服务器,然后使用它维护的值编辑它的本地副本(您可以在 UI 中更改或重置它们),然后构建项目。这使它永远不会触及源代码控制,同时让您可以很好地控制 dll 版本控制。
他们是你想让他们表达的意思。您可以对版本号的每个部分自由使用自己的定义;除了不同的数字是不同的这一事实之外,语言并没有由此驱动的功能。
AssemblyVersion用于程序集的强名称(签名)。
AssemblyFileVersion由 Windows 显示在文件属性的版本选项卡中。
AssemblyInformationalVersion用于 NuGet 之类的程序集清单。
至于如何版本,我推荐Semantic Versioning,它使用 3 部分版本号:
给定版本号 MAJOR.MINOR.PATCH,递增:
1.当您进行不兼容的 API 更改时的 MAJOR 版本,
2.当您以向后兼容的方式添加功能时的 MINOR 版本,以及
3.当您进行向后兼容时的 PATCH 版本bug修复。
AssemblyVersion 用于带有 sn.exe 的程序集的强名称,但 AssemblyFileVersion 在文件属性上显示版本。