最简单的方法来设置虚假的msbuild日志记录详细程度?

时间:2014-12-09 16:44:30

标签: msbuild f#-fake

我的目标看起来像这样:

Target "builddotnetcode" (fun _ ->
  !! "../Mercury.sln"
    |> MSBuildRelease null "Clean,Build" 
    |> Log "MercuryBuild - Output: "
)

我想简单地在某处设置详细程度。据我所知,你需要指定MSBuildParams对象的Verbosity成员。但build是唯一提供传递MSBuildParams的方法的MSBuildHelper function。使用build我需要指定Configuration = Release属性,项目列表,并删除到Log的管道。似乎应该有一种更简单的方法,不会让我重新定义整个任务。我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

所以我做的是以下内容。我这样做的原因是因为我想为每个正在构建的解决方案文件创建一个日志文件

let loggerConfig : list<MSBuildFileLoggerConfig> = [
  {
    Number = 1
    Filename = Some (baseDir + name + "_build.log")
    Verbosity = Some MSBuildVerbosity.Minimal
    Parameters = Some [MSBuildLogParameter.Append]
  }
]

let setParams defaults =
    { defaults with
        Verbosity = Some MSBuildVerbosity.Minimal
        Targets = ["Build"]
        MaxCpuCount = Some (Some 4)
        FileLoggers = Some loggerConfig
        ToolsVersion = Some "12.0"
        Properties =
          [
            "Optimize", "True"
            "DebugSymbols", "True"
            "Configuration", buildMode
          ]
     }

最后,我能看到的唯一可以让你覆盖msbuilddefaults的msbuild任务是标准版本。

build setParams solution
  |> DoNothing