在VS中,通常在Build(增量式)和Rebuild之间进行区分,后者将先进行清理,然后再执行与Build相同的操作。我可以使用FAKE提供类似的行为吗?
让我们假设以下目标:
Target "Clean" DoNothing
Target "Work" DoNothing
Target "All" DoNothing
RunTargetOrDefault "All"
通常,我要运行所有这些文件,“工作前清洁”,因此最终得到:
"Clean" ==> "Work" ==> "All"
但是,Work并不是真正依赖于Clean的-仅是要同时运行Clean,必须首先运行Clean。有了上面的依赖关系链,如果没有先运行Clean,就无法运行Work。有没有办法或通用的模式来支持这一点?
到目前为止,我已经考虑了:
一种)
"Clean" ==> "All"
"Work" ==> "All"
这正确表示了All的依赖关系,但是缺少了Clean应该在Work之前执行的顺序(如果两者都运行)。
B)
Target "WorkOnly" DoNothing
"WorkOnly" ==> "Work"
"Clean" ==> "Work" ==> "All"
这有点儿接近,但是仍然不能保证在构建All Clean时会在WorkOnly之前运行
C)
Target "Start" DoNothing
"Start"
=?> ("Clean", not (hasBuildParam "noclean"))
==> "Work"
==> "All"
这样,“清理”将始终运行,除非我将“noclean”指定为参数。
这似乎完全支持我的情况,并且实际上相当灵活,但是如果有多个可选阶段,可能会变得有些复杂。
这是预期的方式吗,其他人也如何做到?还是我遗漏了一些明显的东西?
最佳答案
不,目前没有运营商。您可能要使用新的运算符创建拉取请求。
对于将来的目标依赖项运行时,我们也有一个prototype implementation。您也可以尝试在此处添加新的运算符。
关于f#-fake - 伪造模式将目标构建顺序与依赖关系分开,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21334283/