1
我正在使用Cake 0.23.0,很高兴地看到任务依赖关系已被扩展。不幸的是,似乎即使是最新版本也不能解决我的问题。 或者我只是做错了什么?在Cakebuild中创建任务序列
我想达成什么
- 假如我有相等多种平台(如x86或x64)定义的任务
- 我想定义首先是一个生成序列为x86平台执行所有任务。一旦完成一个初始化任务应该被执行,只是将平台设置为x64,然后应该执行与x86一样的任务。
- 实施例序列: 任务初始化86 - >任务A - >任务B - >任务C - >任务初始化64 - >任务A - >任务B - >任务C
当前行为 由此产生的序列是 任务初始化x86 - >任务A - >任务B - >任务C - >任务初始化x64
看来,Cake一次只遵守任务依赖关系。我已经定义它像图所示:
Task("Compile-All-Platforms")
.IsDependentOn("Init-86")
.IsDependentOn("A")
.IsDependentOn("B")
.IsDependentOn("C")
.IsDependentOn("Init-x64")
.IsDependentOn("A")
.IsDependentOn("B")
.IsDependentOn("C");
你好雷诺, 谢谢你的回答。我想我可以尽量减少任务和功能的数量。基本上这些功能可以完成我需要的工作。 我建议改进文档,因为对于我来说,直到遇到麻烦时才明确表示C#Make的行为如此。 –
......另一件重要的事情应该在新手文档中更好地突出显示:如果您在具有如“IsDependentOn ...”定义的依赖关系的任务中使用“WithCriteria”,则将执行任务,尽管依赖不被满足。 一旦你知道这个,你可以处理它。 –
您可以在https://cakebuild.net/提交您的意见,因为我不是Cake的贡献者。这就是说,如果你的构建步骤足够复杂,你可以(应该?)使用Cake扩展模块来封装每个构建步骤。您可以在方法中调用它两次,并在调用之间更改配置。但是,你会有一个单一的构建脚本,虽然我很确定你更好的步骤,利用任务依赖关系。 请注意,我们不知道您的系统的实际复杂性,这个回答理所当然有3个项目与2个目标平台。 –