我不明白这两者之间的区别。
我想使用FAKE的CscHelper将单个c#文件编译成dll。这是我的构建文件:
// include Fake lib
#r @"packages/FAKE/tools/FakeLib.dll"
open Fake
open CscHelper
Target "Default" (fun _ ->
["Discover.cs"] |> csc (fun p -> { p with Output="Discover.dll"; Target=Library })
)
RunTargetOrDefault "Default"
这是我得到的错误:
build.fsx(7,24): error FS0001: Type mismatch. Expecting a
string list -> unit
but given a
string list -> int
The type 'unit' does not match the type 'int'
如果我用“Csc”替换“csc”,它会正确编译。为什么?在文档中,除了单个字符之外,代码示例在字面上是完全相同的。方法签名看起来与返回类型不同。为什么有两种变体,如何使小写的变体工作?
答案 0 :(得分:0)
小写形式是正确的。您始终可以将结果传递给ignore函数,以确保返回unit()。
// include Fake lib
#r @"packages/FAKE/tools/FakeLib.dll"
open Fake
open CscHelper
Target "Default" (fun _ ->
["Discover.cs"] |> csc (fun p -> { p with Output="Discover.dll"; Target=Library }) |> ignore
)
RunTargetOrDefault "Default"
实际的工具提示会告诉您发生了什么(它返回退出状态代码,其类型为int):
类型不匹配。期待一个 '字符串列表 - >单元'
但给了一个 '字符串列表 - > INT'
类型'单位'与类型' int'不匹配 val csc:setParams:(CscParams - > CscParams) - > inputFiles:string list - > INT 全名:Fake.CscHelper.csc 使用指定的参数编译给定的C#源文件。参数
setParams
- 用于覆盖默认CSC参数的函数。inputFiles
- C#输入文件。返回
编译过程的退出状态代码。
样品
[" file1.cs&#34 ;; " file2.cs"] |> csc(有趣的参数 - > {带有Output = ... Target = ......}的参数)
你可能已经发现了这一点,但很高兴每个人都知道有选择。谢谢。美好的一天。