内容提要
本文介绍了如何在ASP.NET Core API项目中设置和读取语义版本号。通过在csproj文件中配置`InformationalVersion`,可以准确反映构建时的版本号,并在API的`/version`端点返回该版本号,从而确保持续交付管道中版本信息的正确性。
关键要点
-
本文介绍了如何在ASP.NET Core API项目中设置和读取语义版本号。
-
通过在csproj文件中配置InformationalVersion,可以准确反映构建时的版本号。
-
API的/version端点返回该版本号,确保持续交付管道中版本信息的正确性。
-
一个.NET程序集有多个版本号,包括AssemblyVersion、FileVersion、InformationalVersion和PackageVersion。
-
InformationalVersion是唯一一个在运行时可以精确读取的版本号。
-
在csproj文件的<PropertyGroup>元素中添加<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>。
-
使用dotnet build命令传递版本号。
-
在运行时读取InformationalVersion的代码示例。
-
在最小API中添加/version端点以返回版本号的JSON对象。
延伸问答
如何在ASP.NET Core项目中设置语义版本号?
在csproj文件的<PropertyGroup>元素中添加<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>,并通过dotnet build命令传递版本号。
ASP.NET Core API的/version端点有什么用?
它返回当前API的版本号,以确保持续交付管道中版本信息的正确性。
什么是InformationalVersion,它与其他版本号有什么不同?
InformationalVersion是唯一一个在运行时可以精确读取的版本号,其他版本号如AssemblyVersion和FileVersion在设置时会添加额外的部分。
如何在运行时读取InformationalVersion?
可以使用代码:string? version = Assembly.GetEntryAssembly()?.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
在构建时设置的语义版本号会如何影响AssemblyVersion和FileVersion?
如果设置的语义版本号只有三个部分,AssemblyVersion和FileVersion会自动在最后添加一个0。
如何在最小API中添加/version端点?
在Program.cs中添加处理程序,使用app.MapGet("/version", () => objVersion);来返回版本号的JSON对象。