2015-04-11 1 views
0

Я хочу выполнить скрипт FAKE с помощью fsi --exec, потому что он намного быстрее, чем при использовании FAKE.exe. Однако я не могу понять, как указать цель.не может указать Target при запуске FAKE с помощью fsi --exec

Это можно сделать:

FAKE.exe build.fsx Clean 

Это я хочу сделать (но не работает, он будет использовать цель по умолчанию):

fsi --exec build.fsx Clean 

Любые намеки?

Благодаря

Rasmus

ответ

1

Вы должны сделать немного больше работы,

В начале вашей установки сценария или по умолчанию накопления параметров и в конце сценария использовать цель по умолчанию построить, что-то вроде:

#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" 

Это должно работать как для поддельных вызовов, так и для Fsi, например,

fsi yourScript.fsx target="Yourtarget" 

Управление командами arg немного неудобно, у кого-нибудь есть лучшее предложение о том, как обрабатывать?

+0

Да, это работает, спасибо! Для всех других новичков F # я могу добавить, что мне нужно было объявить 'let mutable target =" myDefaultTarget "' –