C#中的程序集和更多(第1部分)

本文关键字:1部 程序集 | 更新日期: 2023-09-27 18:23:45

如果您转到:

解决方案资源管理器-->属性-->(双击)程序集信息

您将看到有关项目程序集的一些信息。最后,每个组件都有一些不同的版本:

  1. 主要版本
  2. 次要版本
  3. 内部版本号
  4. 修订

我知道这些是这些数字:

[程序集:AssemblyVersion("1.0.0.0")]
[程序集:AssemblyFileVersion("1.0.0.0")]

但我不明白其中的含义。

C#中的程序集和更多(第1部分)

构建项目时,这些值将烘焙到dll中,这样,当您通过Windows文件系统查看dll的属性时,您将看到该版本号。

管理这些数字有点麻烦。在旧的项目中,你经常会看到一些丑陋的构建脚本,它们会做一些事情,比如签出文件,然后增加数字,然后签入,然后继续构建。。。我见过的最优雅的解决方案是由TeamCity实现的(尽管可能有类似的产品);它基本上将所有项目文件复制到您的构建服务器,然后用它维护的值编辑它的本地副本(您可以在UI中更改或重置它们),然后构建项目。这使它永远不会接触源代码管理,同时让你对dll版本控制有很好的控制。

它们是你想要它们的意思。您可以对版本号的每个部分使用自己的定义;除了不同的数字是不同的这一事实之外,没有任何功能是由语言驱动的。

AssemblyVersion用于程序集的强名称(签名)。

AssemblyFileVersion由Windows显示在文件属性的"版本"选项卡中。

AssemblyInformation版本在程序集清单中用于NuGet之类的东西。

至于如何版本,我建议使用语义版本控制,它使用三部分版本号:

如果版本号为MAJOR.MINOR.PACH,则递增:
1.当您进行不兼容的API更改时的主要版本,
2.以向后兼容的方式添加功能时的MINOR版本,以及
3.当你进行向后兼容的错误修复时,补丁版本。

AssemblyVersion用于带有sn.exe的程序集的强名称,但是AssemblyFileVersion显示文件属性的版本。