【问题标题】:how can i suppress all compiler and code analysis warnings from msbuild at the command line?如何在命令行中禁止来自 msbuild 的所有编译器和代码分析警告?
【发布时间】:2010-11-30 21:21:16
【问题描述】:

This has been asked,但没有得到答复。答案(使用/warn:1)不适用于msbuild.exe,仅适用于csc.exe。也许我在 csc 和 msbuild 之间遗漏了一些东西?

我想禁止所有编译器警告和代码分析警告(例如 “变量 'variableNameHere' 已分配,但它的值...”代码分析警告:CA1805: Microsoft.Performance : ...) 当我使用命令行 msbuild 时。我不想更改解决方案文件。在我正在构建的非常大的解决方案中有数百条警告消息——修复它们远远超出了我的项目的范围。

我尝试了/v:quiet,但没有奏效。

有没有办法通过命令行来做到这一点?

更新:这个:

C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe C:\Dev\ReallyBigSolution.sln /p:NoWarn=true /p:NoWarn=CA1031

绝对不起作用。我仍然收到数百个警告,包括我专门阻止的警告 (CA1031)。

使用/p:RunCodeAnalysis=Never/p:RunCodeAnalysis=false 显然不会抑制代码分析警告或错误。

【问题讨论】:

  • 我想知道哪里没有 MSBuild 的 UI?好像真的可以用一个。猜测各种设置是浪费时间。
  • 您无需猜测。使用 VS,修改项目属性(构建选项卡或代码分析选项卡),然后查看将哪些更改持久化到 .csproj 文件中。 msbuild 的重点是成为一个命令行工具。
  • @Brian:我查看了 csproj 属性页,没有看到任何关于这些代码分析警告的信息。我想我要放弃了。在这上面浪费太多时间。我认为这很容易,只是缺少一些命令行。

标签: msbuild


【解决方案1】:

可以在编译器上使用nowarn标志,对应.csproj文件中的<NoWarn>属性。所以也许msbuild /p:NoWarn="37;68" 会关闭那些警告号码(没试过)。

或者使用

http://msdn.microsoft.com/en-us/library/13b90fz7.aspx

完全关闭警告。暂时不知道属性名,试试/p:Warn=0

编辑:将 cmets 读到最后;似乎真的摆脱所有这些警告是不可能的。

【讨论】:

  • 是的,我认为这行得通。但这意味着找到我收到的所有警告号码。我只想说“不关心警告”并完成它。
  • 更新:尝试 /p:NoWarn=true 和 /p:NoWarn=CA1051 - 没有好的结果。仍然收到大量其他警告。
  • 另外:this: "/p:NoWarn=CA1051;CA1031" 导致错误:“术语 'CA1031' 未被识别为 cmdlet 的名称等” ... blerg
  • /warn 适用于 csc.exe,而不适用于 msbuild。我已经在问题中解决了这个问题。如果有办法将它传递给 msbuild 我找不到它......
  • 只需在 Visual Studio 中编辑被抑制的警告或警告级别(项目属性,构建选项卡),保存项目,然后检查 .csproj 文件以查看“正确的属性类型”应该是什么样子喜欢(例如<Name>Value</Name>)。然后使用 /p:Name=Value 在命令行上将这些传递给 msbuild。
【解决方案2】:

我知道这是一篇旧帖子,但它让我走上了正确的道路,通过在我的 msbuild 调用中添加以下内容,它在构建项目时抑制了所有警告和输出。我在批处理文件中有这个,所以我相信我得到的唯一输出是最终结果和我用 echo 提示的任何消息。秘密在 /clp 开关中。所以我查了一下,把所有抑制输出的都放进去。每个都摆脱了更多,但仍然出现黄色警告,当我添加 ErrorsOnly 开关时,没有更多输出。

call msbuild /clp:NoSummary;NoItemAndPropertyList;ErrorsOnly /verbosity:quiet /nologo

【讨论】:

    【解决方案3】:

    试试这个:

    msbuild.exe C:\Dev\BigSolution.sln /p:WarningLevel=0 /p:RunCodeAnalysis=false
    

    【讨论】:

      【解决方案4】:

      我已经尝试过了,也无法抑制警告,除非我将它们列在 msbuild.exe 的 /NoWarn 属性中

      【讨论】:

        【解决方案5】:

        【讨论】:

        • 是的,我读到了。它适用于 MSBuild 警告。我想禁止编译器警告。已编辑的问题。
        【解决方案6】:

        好像是not possible...

        带有 MSB 前缀的警告由 微软构建。目前,我们无法压制 MSBuild 警告。

        【讨论】:

        • 适用于一些但不是全部:我认为像 CS0219(变量 'xxxxxx' 已分配但它的值从未使用过)之类的东西不是 MSBuild 错误。
        • 这是编译器警告,而不是 MSB 警告。您是否在传递参数...您检查过这个...social.msdn.microsoft.com/Forums/en-US/msbuild/thread/…
        • 是的,我读过。涉及更改解决方案,这就是为什么我指定我不想更改问题中的 .sln 文件。我要求的可能是不可能的 /sadface
        • 所以您不想更改项目?即...例如忽略VS中的警告...?您只想在 msbuild 期间发生这种行为?
        • 你试过了吗.../property:RunCodeAnalysis=false 在这里找到...stackoverflow.com/questions/1610938/…
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-03
        相关资源
        最近更新 更多