2016-04-26 65 views
1

想要使用FAKE加速構建。理論上,如果我可以並行運行構建序列(在目標內),應該使其更快。在僞造中並行運行任務序列

let buildProject outputDir buildTargets projectName = 
    let setParams p = 
     { p with 
      Verbosity = Some(Quiet) 
      Targets = buildTargets 
      Properties = 
       [ "DevEnvDir", "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools" 
        "OutputPath", outputDir 
        "Optimize", "True" 
        "DebugSymbols", "True" 
        "Configuration", buildMode ] 
      } 
    build setParams projectName |> DoNothing 

Target "BuildLibs" (fun _ -> 
    !! "**/*.csproj" 
    -- "**/*.Tests.csproj" 
    //A way to run in parallel?? 
    |> Seq.iter (buildProject buildOutDir ["ReBuild"]) 
) 

有沒有一種方法可以並行運行序列迭代?

回答

1

,最簡單的辦法是:

Target "BuildLibs" (fun _ -> 
    !! "**/*.csproj" 
    -- "**/*.Tests.csproj" 
    |> Seq.ToArray 
    |> Array.Parallel.iter (buildProject buildOutDir ["ReBuild"]) 
) 

另一種選擇是 「F# Parallel Sequences」 組分。

#r "./PATHTOLIB/lib/net40/FSharp.Collections.ParallelSeq.dll" 
open FSharp.Collections.ParallelSeq 

Target "BuildLibs" (fun _ -> 
    !! "**/*.csproj" 
    -- "**/*.Tests.csproj" 
    |> PSeq.iter (buildProject buildOutDir ["ReBuild"]) 
)