使用FAKE从TeamCity内部版本号中提取NuGet包版本

时间:2015-09-29 12:19:17

标签: f# nuget teamcity f#-fake

我已经创建了我的构建脚本,它从我的项目生成一个NuGet包,我现在正试图从TeamCity中提取版本号,而不是在我的脚本中使用静态值。

我当前的代码是这样的(在目标内)

NuGet (fun p ->
    {p with
        Authors = authors
        Project = projectName
        Description = projectDescription
        OutputPath = packagingRoot
        Summary = projectSummary
        WorkingDir = packagingDir
        Version = TeamCityHelper.TeamCityBuildNumber }) "myProject.nuspec"

问题是与FAKE捆绑在一起的TeamCity帮助程序返回一个可选字符串而不是字符串,其中NuGet调用接受一个字符串。

这是我第一次使用F#,如何将TeamCityHelper.TeamCityBuildNumber作为字符串而不是可选的,以便为NuGet步骤做好准备?如果TeamCity没有为版本号返回任何内容,我最好还是要删除构建版本,但是现在我只想扔一个像“0.0.1”这样的地方版本。

2 个答案:

答案 0 :(得分:3)

我只需创建一个如下所示的函数,并将其放在NuGet目标上方:

let getTeamCityBuildNumberOrDefault() =
    match TeamCityHelper.TeamCityBuildNumber with
    | Some v -> v
    | None -> "0.0.1"

然后在TeamCityHelper.TeamCityBuildNumber目标中使用它代替NuGet

答案 1 :(得分:1)

你尝试过类似的事情吗?

NuGet (fun p ->
    match TeamCityHelper.TeamCityBuildNumber with 
    | Some(buildNumber) ->
        {p with
            Authors = authors
            Project = projectName
            Description = projectDescription
            OutputPath = packagingRoot
            Summary = projectSummary
            WorkingDir = packagingDir
            Version = buildNumber}
    | None ->
        {p with
            Authors = authors
            Project = projectName
            Description = projectDescription
            OutputPath = packagingRoot
            Summary = projectSummary
            WorkingDir = packagingDir
            Version = "0.0.1"}) "myProject.nuspec"