内容提要
语义版本控制(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。