我正在尝试使用预定义函数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"
答案 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)