匹配F#FAKE构建文件中的字符串

时间:2015-05-11 13:10:16

标签: build f# f#-fake

我有一个F#FAKE构建文件,我想用参数conf调用它可以有两个值,cs和sk。我的批处理文件看起来像这样

@echo off
cls
"tools\nuget\nuget.exe" "install" "FAKE" "-OutputDirectory" "tools" "-ExcludeVersion"
"tools\FAKE\tools\Fake.exe" build.fsx conf=sk
pause

在F#文件中,我使用environVar "conf"获取参数,这样就行了。

现在我想在F#文件中创建一个与conf参数匹配的辅助方法,并返回一个字符串(在我的情况下是构建配置值),所以我有

let getConfiguration conf =
   if (conf=="cs") then "Release"
   else "Release(SK)"

我收到一条奇怪的消息

build.fsx(29,71): error FS0001: The type 'string' does not support the operator '=='

这就是我使用方法的方法

Target "Build" (fun _ ->
    !! @"**/*.csproj"
      |> MSBuild buildDir "Build" ["Configuration",(getConfiguration (environVar "conf"))]
      |> Log "AppBuild-Output: "
)

1 个答案:

答案 0 :(得分:3)

F#相等运算符为=

我不知道FAKE或您的方法是否有效,但编译错误的原因是,正如错误消息所述,没有==运算符。有效版本:

    if conf = "cs" then "Release" else "Release(SK)"

参见例如symbol and operator reference in the MSDN