当使用 fsi --exec 运行 FAKE 时无法指定目标
cannot specify Target when running FAKE with fsi --exec
我想用 fsi --exec 执行 FAKE 脚本,因为它比使用 FAKE.exe 快得多。但是,我不明白如何指定目标。
我能做到:
FAKE.exe build.fsx Clean
我想这样做(但不起作用,它将使用默认目标):
fsi --exec build.fsx Clean
有什么提示吗?
谢谢
拉斯穆斯
你需要做一些额外的工作,
在脚本开始时设置或默认构建参数,在脚本结束时使用默认目标构造,例如:
#I "pathToYourFale\FAKE\tools"
#r @"FakeLib.dll"
open Fake
open Fake.EnvironmentHelper
// Process command args as Fake utilities don't work from fsi invoke
for arg in fsi.CommandLineArgs do
tracefn "arg: %s" arg
if arg.StartsWith("target=") then target <- arg.Split('=').GetValue(1) :?> string
else if arg.StartsWith("Target=") then target <- arg.Split('=').GetValue(1) :?> string
...
Your script here
...
...
AdditionalSyntax.RunParameterTargetOrDefault "target" "target"
这应该适用于 Fake 调用和 Fsi 调用,例如
fsi yourScript.fsx target="Yourtarget"
命令 arg 处理有点笨拙,有人对如何处理有更好的建议吗?
我想用 fsi --exec 执行 FAKE 脚本,因为它比使用 FAKE.exe 快得多。但是,我不明白如何指定目标。
我能做到:
FAKE.exe build.fsx Clean
我想这样做(但不起作用,它将使用默认目标):
fsi --exec build.fsx Clean
有什么提示吗?
谢谢
拉斯穆斯
你需要做一些额外的工作,
在脚本开始时设置或默认构建参数,在脚本结束时使用默认目标构造,例如:
#I "pathToYourFale\FAKE\tools"
#r @"FakeLib.dll"
open Fake
open Fake.EnvironmentHelper
// Process command args as Fake utilities don't work from fsi invoke
for arg in fsi.CommandLineArgs do
tracefn "arg: %s" arg
if arg.StartsWith("target=") then target <- arg.Split('=').GetValue(1) :?> string
else if arg.StartsWith("Target=") then target <- arg.Split('=').GetValue(1) :?> string
...
Your script here
...
...
AdditionalSyntax.RunParameterTargetOrDefault "target" "target"
这应该适用于 Fake 调用和 Fsi 调用,例如
fsi yourScript.fsx target="Yourtarget"
命令 arg 处理有点笨拙,有人对如何处理有更好的建议吗?