如何运行低冗余输出的Fake(F# Make)独立控制台应用?
解决FAKE独立控制台应用冗余输出问题
要实现运行指定FAKE目标时只输出目标本身的内容,需调整FAKE的日志配置并修正代码语法问题,具体修改如下:
修正后的完整代码
open Fake.Core open Fake.IO open Fake.Core.Logging let initializeContext () = // 初始化上下文时配置静默日志器,仅保留错误级别以上的日志 let execContext = Context.FakeExecutionContext.Create false "build.fsx" [] (Loggers.silent |> Loggers.withMinimumLevel LogLevel.Error) Context.setExecutionContext (Context.RuntimeContext.Fake execContext) let runOrDefault args = try match args with | [| target |] -> Target.runOrDefault target | _ -> Target.runOrDefault "Run" 0 with e -> printfn "%A" e 1 initializeContext() // *** Define Targets *** Target.create "Hello" (fun _ -> printfn "hello from FAKE!" ) [<EntryPoint>] let main args = runOrDefault args
关键修改说明
- 添加日志控制引用:引入
Fake.Core.Logging命名空间,用于配置FAKE的日志输出级别 - 配置静默日志器:在创建
FakeExecutionContext时,使用Loggers.silent配合withMinimumLevel LogLevel.Error,过滤掉FAKE自身的运行日志(如run Hello这类冗余信息) - 修正语法错误:原代码中
Target.create "Hello" (fun _ -缺少>,修正为fun _ ->确保代码可编译
运行验证
执行命令:
dotnet run -- Hello
此时输出仅为:
hello from FAKE!
完全符合预期。
内容的提问来源于stack exchange,提问作者jim108dev
相关产品推荐
相关产品推荐

