You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET分析器:包版本与程序集版本的关联及版本更新方法问询

我来帮你理清这三个版本号的关联和更新策略,毕竟在开发Analyzer with Code Fix项目时,版本号管理对用户体验和维护效率都很重要:

三个版本号的关联

这三个版本各司其职,但通常会保持逻辑上的一致性,方便追踪和维护:

  • 包版本:这是你的NuGet包对外展示的核心版本号,用户安装、更新Analyzer时看到的就是它。它遵循语义化版本(SemVer)规范,格式一般为主版本号.次版本号.修订号,还可以附加预发布标签(比如1.2.3-beta)。
  • 程序集版本:这是.NET程序集本身的标识版本,CLR会用它来区分不同版本的程序集,决定是否加载对应的程序集。默认情况下,它会和包版本的前三位(主、次、修订)对齐,你也可以单独配置,但建议和包版本保持关联,避免混淆。
  • 程序集文件版本:这是Windows文件系统层面的版本信息,会显示在文件属性的「详细信息」里。它的格式更灵活,通常也会和包版本对应,很多团队会在第四位加上构建编号或日期(比如1.2.3.20240520),方便追踪具体的构建版本,不过CLR并不依赖它来加载程序集。

简单来说,包版本是给用户看的,程序集版本是给CLR看的,文件版本是给系统/运维人员看的,三者保持关联能让整个版本体系更清晰。

项目修改时的版本号调整策略

根据你修改的类型,按照语义化版本的思路来调整:

  • 修复Bug(不破坏现有功能,仅修复问题):
    • 包版本:升级修订号,比如从1.2.3更新到1.2.4
    • 程序集版本:保持前三位和包版本一致,第四位可设为修订号或构建号,比如1.2.4.0
    • 程序集文件版本:同步包版本,或加上构建标识,比如1.2.4.20240520
  • 添加新规则(兼容现有功能,新增特性):
    • 包版本:升级次版本号,同时将修订号重置为0,比如从1.2.3更新到1.3.0
    • 程序集版本:对应调整为1.3.0.0
    • 程序集文件版本:同步为1.3.0.xxx(xxx为构建相关编号)
  • 重大变更(比如修改现有规则的行为,可能导致用户代码出现新的报错):
    • 包版本:升级主版本号,次版本和修订号重置为0,比如从1.2.3更新到2.0.0
    • 程序集版本:对应调整为2.0.0.0
    • 程序集文件版本:同步为2.0.0.xxx

另外提个小建议:如果你的项目用自动化构建工具(比如Azure DevOps、GitHub Actions),可以把文件版本的第四位设为自动生成的构建编号,这样每次构建都有唯一的文件版本,方便后续追踪问题。

内容的提问来源于stack exchange,提问作者Mo Sadeghi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:08:32