Asp.Net 5语义版本控制

时间:2015-08-05 18:08:43

标签: c# asp.net versioning dnx semantic-versioning

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

  1. 这会取代程序集版本的想法还是添加到它?或者只是与Nuget一起使用。
  2. 如何在运行时访问该版本。我在Microsoft.Framework.Runtime包中遇到了Nuget.SemanticVersion对象,但我无法找到如何在代码中检索它。
  3. 是否有一种以编程方式在构建或自定义脚本上更新此值?

1 个答案:

答案 0 :(得分:3)

我不会说版本控制以特别戏剧性的方式发生了变化。在版本号x.y.z中,“x”表示“大变化/破坏变化”,“y”表示“次要添加和修复”,“z”表示“非常小的修复”。这与Semantic Versioning(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

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