我已经创建了我的构建脚本,它从我的项目生成一个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”这样的地方版本。
答案 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"