使用RegexReplaceInFilesWithEncoding的文件中的Changin文本会出错 - FAKE F#MAKE

时间:2017-03-20 04:31:28

标签: f# f#-fake

我正在尝试使用预定义函数RegexReplaceInFilesWithEncoding更改FAKE代码中的文件中的文本。但它正在抛出错误......即The value is not a function and can not be applied。下面是我的代码:

注意:version_no是动态的,但暂时我将它用作静态。

#r "./packages/FAKE/tools/FakeLib.dll"
open Fake

let version_no = "0.65"

Target "ChangeText" (fun _ ->
    !! "D:/test/TestFile.txt"
    |> RegexReplaceInFilesWithEncoding @"admintool: XYZ.XYZ.XYZ_0.[0-9][09]"
                                       @"admintool: XYZ.XYZ.XYZ_"+version_no
                                       System.Text.Encoding.UTF8)

"ChangeText"
RunTargetOrDefault "ChangeText"

1 个答案:

答案 0 :(得分:3)

在F#中,函数应用程序具有所有操作的最高优先级。这包括“加”运算符。

这意味着像这样的代码:

f x+5

将被解释为:

(f x) + 5

首先将f应用于x,因为它具有最高优先级,而+ 5部分则来自。{/ p>

要解决此问题,只需在操作周围添加括号:

f (x+5)

或者,将此应用于您的案例:

Target "ChangeText" (fun _ ->
    !! "D:/test/TestFile.txt"
    |> RegexReplaceInFilesWithEncoding @"admintool: XYZ.XYZ.XYZ_0.[0-9][09]"
                                       (@"admintool: XYZ.XYZ.XYZ_"+version_no)
                                       System.Text.Encoding.UTF8)