Asp.Net 5 语义版本控制

Posted

技术标签:

【中文标题】Asp.Net 5 语义版本控制【英文标题】:Asp.Net 5 Semantic Versioning 【发布时间】:2015-10-28 15:48:57 【问题描述】:

版本控制的工作方式似乎与以前版本的 .Net 不同。 project.json 似乎使用了语义版本控制(从我在网上看到的),格式为 Major.Minor.Patch-Special。

    这是否取代了大会版本的想法或添加到它?或者它只是与 Nuget 一起使用。 如何在运行时访问版本。我在 Microsoft.Framework.Runtime 包中在线遇到了 Nuget.SemanticVersion 对象,但我不知道如何在代码中检索它。 是否有编程方式来更新构建或自定义脚本上的此值?

【问题讨论】:

【参考方案1】:

我不会说版本控制发生了特别戏剧性的变化。在版本号 x.y.z 中,“x”表示“重大更改/重大更改”,“y”表示“较小的添加和修复”,“z”表示“非常小的修复”。这与语义版本控制 (SemVer) 状态非常接近。

在基于project.json 的项目中,只有一个地方可以指定版本,那就是project.json 文件本身。该版本是 SemVer(例如 x.y.z-prerel),用于 NuGet 包版本程序集版本,程序集信息版本。如果您已在程序集中显式设置程序集版本或信息版本,则这些将被尊重而不是被覆盖。 (可以看代码here。)

在运行时,您可以通过反射读取程序集版本(就像以前一样)。

在 DNX 应用程序中运行时,还有一个 ILibraryManager 接口,您可以使用它来检查正在运行的应用程序。不过,这是一个相当高级的场景。

最后,在project.json 文件中,您可以对版本的 x.y.z 部分进行硬编码,例如1.2.3 但您也可以为预发布说明符指定 *,例如1.2.3-*。如果您使用* 作为预发布说明符,您可以设置一个名为DNX_BUILD_VERSION 的环境变量来指定* 的值,例如beta1rc2-54289

记录了一些功能请求,以便在外部指定整个版本号时更加灵活。

【讨论】:

以上是关于Asp.Net 5 语义版本控制的主要内容,如果未能解决你的问题,请参考以下文章

语义版本控制问题和 npm 5 或更高版本

ASP.Net Core WebApi几种版本控制对比

语义版本控制自动化

使用Laravel的语义版本控制进行包版本控制

ASP.NET MVC 中用于 CSS / JS 文件的自动版本控制?

ASP.NET JS和CSS通过版本号控制缓存