2016-01-22 123 views
4

我剛剛發現這個目標通過ProjectScaffold產生假構建腳本:運營商</>在FAKE構建腳本中做了什麼?

// Copies binaries from default VS location to expected bin folder 
// But keeps a subdirectory structure for each project in the 
// src folder to support multiple project outputs 
Target "CopyBinaries" (fun _ -> 
    !! "src/**/*.??proj" 
    -- "src/**/*.shproj" 
    |> Seq.map (fun f -> ((System.IO.Path.GetDirectoryName f) 
      </> "bin/Release", "bin" 
      </> (System.IO.Path.GetFileNameWithoutExtension f))) 
    |> Seq.iter (fun (fromDir, toDir) -> CopyDir toDir fromDir (fun _ -> true)) 
) 

我的問題:這是什麼奇怪的</>運營商呢?

(我的互聯網搜索並不是很成功。)

回答

9

操作</>是中綴運算符和合並兩個路徑段成一個完整的路徑。在這方面它幾乎與@@操作符相同。 </>運算符是在@@運算符之後創建的,因爲當第二個路徑以root開頭時,@@運算符在類UNIX系統上表現異常。

以下是從GitHub上的問題描述中取得的示例。

"src" @@ "/home/projects/something" returns "src/home/projects/something" 

    "src" </> "/home/projects/something" returns "/home/projects/something" 

操作員在EnvironmentHelper定義: https://fsharp.github.io/FAKE/apidocs/fake-environmenthelper.html

這些鏈接指向問題描述:(習慣於看的Unix) https://github.com/fsharp/FAKE/issues/670https://github.com/fsharp/FAKE/pull/695

+0

在我眼裏,@@操作符是完全正常的,並且完全符合您期望的操作。而只是很奇怪。 –