如何为.NET Core应用程序和库设置语义版本控制

如何为.NET Core应用程序和库设置语义版本控制

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

语义版本控制(SemVer)是一种软件版本管理方案,采用<major>.<minor>.<patch>格式(如1.0.2),支持可选的预发布后缀。本文介绍如何在.NET程序集构建时设置SemVer版本号,并在运行时读取该版本号,通过项目文件属性和构建命令确保InformationalVersion准确反映SemVer版本。

🎯

关键要点

  • 语义版本控制(SemVer)是一种软件版本管理方案,采用<major>.<minor>.<patch>格式,支持可选的预发布后缀。

  • SemVer是目前最广泛使用的版本控制方案,Nuget和npm都推荐并支持它。

  • 在构建ASP.NET Core API项目时,需要设置SemVer版本号并在运行时读取。

  • SemVer版本号的结构包括<major>、<minor>、<patch>和可选的-prerelease后缀。

  • 当新版本会破坏现有版本时,<major>组件增加;<minor>在添加新功能但保持向后兼容时增加;<patch>在没有破坏性变化和新功能时增加。

  • 在.NET程序集中的版本号有多个,包括AssemblyVersion、FileVersion、InformationalVersion和PackageVersion。

  • InformationalVersion是唯一可以精确设置为SemVer版本号的版本号,其他版本号会在末尾添加0。

  • 设置SemVer版本号需要在项目的csproj文件中添加<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>,并通过dotnet build命令传递版本号。

  • 读取程序集的SemVer版本号可以通过Assembly.GetEntryAssembly()方法获取InformationalVersion。

  • 本文介绍了如何在.NET程序集、库或应用中设置和读取SemVer版本号。

🔎

延伸解读

语义版本控制的结构

语义版本控制(SemVer)采用<major>.<minor>.<patch>格式,适用于软件版本管理。<major>在破坏性更新时增加,<minor>在添加新功能但保持兼容时增加,<patch>则在修复bug时增加。理解这些规则有助于开发者在版本管理中做出明智的决策,确保软件的稳定性和可维护性。

多种版本号的管理

在.NET程序集内,存在多个版本号,如AssemblyVersion、FileVersion和InformationalVersion。只有InformationalVersion可以精确设置为SemVer版本号,其他版本号会自动添加0。这意味着在读取版本信息时,开发者应优先关注InformationalVersion,以确保获取到正确的版本信息。

构建过程中的注意事项

在构建.NET应用时,需在csproj文件中设置<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>,并通过dotnet build命令传递版本号。这一设置确保了InformationalVersion准确反映SemVer版本,避免了不必要的版本信息混淆,尤其在持续集成和部署(CI/CD)流程中至关重要。

延伸问答

什么是语义版本控制(SemVer)?

语义版本控制(SemVer)是一种软件版本管理方案,采用<major>.<minor>.<patch>格式,并支持可选的预发布后缀。

如何在.NET项目中设置SemVer版本号?

在项目的csproj文件中添加<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>,并通过dotnet build命令传递版本号。

在.NET程序集中的不同版本号有什么区别?

.NET程序集有多个版本号,包括AssemblyVersion、FileVersion、InformationalVersion和PackageVersion,其中InformationalVersion是唯一可以精确设置为SemVer版本号的。

如何在运行时读取.NET程序集的SemVer版本号?

可以通过Assembly.GetEntryAssembly()方法获取InformationalVersion来读取SemVer版本号。

SemVer版本号的各个组成部分是什么?

SemVer版本号由<major>、<minor>、<patch>和可选的-prerelease后缀组成。

为什么InformationalVersion是设置SemVer的关键?

因为InformationalVersion是唯一可以精确设置为SemVer版本号的版本号,其他版本号会在末尾添加0。

🏷️

标签

➡️

继续阅读