【问题标题】:Narrow down MSBuild verbosity to limit fake build output缩小 MSBuild 详细程度以限制虚假构建输出
【发布时间】:2017-01-22 20:45:38
【问题描述】:

任何想法如何限制假构建中的 MSBuild 任务生成的输出? 我对查看所有编译信息的详细信息并不太感兴趣,因为我对查看警告消息很感兴趣。

我开始使用 StyleCop.Analyzers,如果我收到一个警告,很难在构建任务生成的所有消息中观察到。

这是我现在的样子:

// Target Build Application
Target "BuildApp" (fun _ ->
    MSBuildRelease buildDir "Build" appReferences
    |> Log "AppBuild-Output: "
)

【问题讨论】:

标签: msbuild f#-fake


【解决方案1】:

MSBuild 助手中最通用的助手函数是MSBuildHelper.build。所有其他功能都是它的特化。

此函数采用setParams 函数,它遵循一般的 FAKE 模式:采用默认参数结构并以某种方式对其进行修改。要设置日志详细程度,请使用 MSBuildParameters.Verbosity 字段:

Target "BuildApp" (fun _ -> 
    "Project.sln"
    |> MSBuildHelper.build (fun p ->
        { p with
             Properties = [ "OutputPath", buildDir ]
             Verbosity = Some Minimal
             Targets = [ "Build" ] } ) )

或者,您可以通过修改MSBuildDefaults 结构来设置整个构建的详细程度:

MSBuildDefaults <- { MSBuildDefaults with Verbosity = Some Minimal }

这样,所有 MSBuild 调用都将使用最少的详细信息。

【讨论】:

  • 我在文档中看到我可以使用 MSBuildHelper.build 并且我知道 MSBuildRelease 是一种专业化。我什至尝试过使用它,但在构建整个解决方案时卡住了——我对应用程序项目和测试项目进行了项目分离。这就是为什么我更喜欢通过 *.csproj 文件方法构建的原因。我最喜欢您答案的第二部分,因为它可以在不更改当前解决方案的情况下解决我想要的问题。谢谢:)
  • build 函数只需要一个项目(或解决方案),因此您不能一次性构建所有项目。相反,您必须多次调用build,遍历项目。这正是next specialization up does。我同意,应该有一个中间专业化 - 一个需要多个项目,但仍然允许指定参数。但是没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 1970-01-01
  • 2011-12-13
相关资源
最近更新 更多