ASP.NET Core 应用程序和程序集的语义版本控制

ASP.NET Core 应用程序和程序集的语义版本控制

💡 原文英文,约700词,阅读约需3分钟。
📝

内容提要

本文介绍了如何在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对象。

🏷️

标签

➡️

继续阅读