【问题标题】:MSBuild: How do i treat warnings as errors when building a project with FAKE?MSBuild:如何在使用 FAKE 构建项目时将警告视为错误?
【发布时间】:2019-05-20 16:19:07
【问题描述】:

我正在使用 FAKE 和 MSBuild 构建一个带有 .fsx 脚本的项目。 使用 MSBuild 构建时,我给它几个参数:

Target "BuildProject" (fun _ ->
CleanDir ProjectDir
[ProjectPath]
|> MSBuild ProjectDir "Build" ["Configuration", "Release"; "Platform","x64"; "Verbosity", "quiet"; "TreatWarningsAsErrors", "true"]
|> ignore)

但是,当我运行我的脚本时,警告不会被视为错误:

Build succeeded.

1 Warning(s)
0 Error(s)

Time Elapsed 00:00:11.36
Finished Target: BuildProject

这是我的命令行输入:

Building project: MyProject/MyProject.fsproj
  C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe  
MyProject/MyProject.fsproj /t:Build /m  /nodeReuse:False /p:RestorePackages="False" 
/p:OutputPath="D:\MyProjectFolder\build\MyProject" /p:Configuration="Release" /p:Platform="x64" 
/p:Verbosity="quiet" /p:TreatWarningsAsErrors="true" /logger:Fake.MsBuildLogger+ErrorLogger,"D:\MyProjectFolder\Project\packages\FAKE\tools\FakeLib.dll"

我不确定该属性是否设置正确,但我通过阅读 FAKE 和 MSBuild 的文档尝试了各种版本。

根据我在网上阅读的内容,该属性必须提供给编译器,如果该属性是在 XML 文件中定义的,则该属性将不起作用。

我使用的是 FAKE 4.64.11。

我希望将所有警告都视为错误,而不仅仅是特定警告。

希望有人能提供帮助。

【问题讨论】:

  • 为了提供更多信息,我试图忽略警告但没有运气。似乎这个问题的解决方案可能对我有用。
  • 这是 MSBuild 警告还是 F# 编译器警告?数字是以“MSB%”还是“FS%”开头的?
  • 这是一个 MSBuild 警告:“MSB3245”。在这种情况下,我删除了一个丢失的包以强制发出警告。

标签: .net f# msbuild f#-fake f#-fake-4


【解决方案1】:

所以...在进一步研究之后,似乎 MSB 错误(例如缺少程序集)无法被我上面所述的 TreatWarningsAsErrors 方法捕获。 解决此问题的一种方法是使用自定义构建包装器来捕获这些错误。

我在这个问题的答案中找到了答案:Treat all warnings as errors

另一个类似的线程: How can I treat MSB3245 (could not resolve reference) warning as an error?

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 2021-06-02
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多