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对象。

🔎

延伸解读

语义版本控制的重要性

在持续交付的过程中,确保API的版本信息准确无误至关重要。通过在ASP.NET Core项目中实现语义版本控制,开发者可以在构建时清晰地标记版本,避免因版本不一致导致的潜在问题。这种做法不仅提升了项目的可维护性,也为后续的版本管理提供了便利。

不同版本号的理解

ASP.NET Core程序集包含多个版本号,如AssemblyVersion、FileVersion和InformationalVersion。了解这些版本号的区别和用途,可以帮助开发者在调试和发布时做出更明智的选择。特别是InformationalVersion,它能准确反映构建时的版本信息,是运行时读取的最佳选择。

配置注意事项

在配置csproj文件时,确保正确设置<IncludeSourceRevisionInInformationalVersion>为false,以避免不必要的源修订信息干扰版本号的准确性。此外,使用dotnet build命令传递版本号时,需注意版本格式,以确保在运行时能够正确读取。

延伸问答

如何在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对象。

🏷️

标签

➡️

继续阅读