首页 > 解决方案 > 具有相同配置的 Nerdbank.GitVersioning 给出不同的结果

问题描述

我刚刚在我的项目中设置了 Nerdbank.GitVersionning,我的设置与 Dapper 相同

这是我的 version.json

{
  "$schema": "https://raw.githubusercontent.com/AArnott/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json",
  "version": "0.1.0-alpha.{height}",
  "assemblyVersion": "0.1.0.0",
  "publicReleaseRefSpec": [
    "^refs/heads/master$",
    "^refs/tags/v\\d+\\.\\d+"
  ],
  "nugetPackageVersion": {
    "semVer": 2
  },
  "cloudBuild": {
    "buildNumber": {
      "enabled": true,
      "setVersionVariables": true
    }
  }
}

如果我执行 nbgv 获取版本:

Version:                      0.1.0.1
AssemblyVersion:              0.1.0.0
AssemblyInformationalVersion: 0.1.0-alpha.1+021de4e5ee
NuGet package Version:        0.1.0-alpha.1
NPM package Version:          0.1.0-alpha.1

这是 Dapper 的 version.json

{
  "version": "1.50.8-alpha.{height}",
  "assemblyVersion": "1.50.0.0",
  "publicReleaseRefSpec": [
    "^refs/heads/master$",
    "^refs/tags/v\\d+\\.\\d+"
  ],
  "nugetPackageVersion": {
    "semVer": 2
  },
  "cloudBuild": {
    "buildNumber": {
      "enabled": true,
      "setVersionVariables": true
    }
  }
}

如果我执行 nbgv 获取版本:

Version:                      1.50.8.23
AssemblyVersion:              1.50.0.0
AssemblyInformationalVersion: 1.50.8-alpha.23+e7020b2bde
NuGet package Version:        1.50.8-alpha.23.e7020b2bde
NPM package Version:          1.50.8-alpha.23.e7020b2bde

关于为什么 Nuget 和 NPM 包版本存在差异的任何想法?

标签: versioning

解决方案


我怀疑你在你的 repo 的 master 分支中,而不是在 Dapper repo 的 master 分支中。这就是从 NuGet / NPM 包版本字符串中删除 git 提交 ID 的原因。根据https://github.com/AArnott/Nerdbank.GitVersioning/blob/master/doc/versionJson.md

publicReleaseRefSpec字段会导致基于某些分支或标签的构建自动从版本中删除 -gabc123 git commit ID 后缀,从而可以方便地使用假定线性版本控制的友好版本号从这些 ref 构建发布。


推荐阅读