在Visual Studio中"将所有警告视为除...之外的错误"

Nei*_*eil 120 c# msbuild

在Visual Studio中,我可以选择"将警告视为错误"选项,以防止在有任何警告的情况下编译代码.我们的团队使用此选项,但我们希望保留两个警告作为警告.

有一个选项可以禁止警告,但我们希望它们显示为警告,这样就不起作用了.

似乎获得我们想要的行为的唯一方法是在"特定警告"文本框中输入每个C#警告号的列表,除了我们想要作为警告的两个.

除了维护问题之外,这种方法的最大缺点是一些警告没有数字,因此无法明确引用它们.例如,"无法解析此引用.无法找到程序集'数据....'"

有谁知道更好的方法吗?


澄清那些没有立即看到为什么这是有用的人.想想大多数警告是如何工作的.他们告诉你刚才写的代码中有些东西.修复它们大约需要10秒钟,这样可以保持代码库更清洁.

"过时"警告与此截然不同.有时修复它意味着只使用新的方法签名.但是,如果整个类已经过时,并且您使用它分散了数十万行代码,那么修复它可能需要数周或更长时间.您不希望构建在那么长时间内被破坏,但您肯定希望看到有关它的警告.这不仅仅是一个假设的案例 - 这发生在我们身上.

文字"#warning"警告也是独一无二的.我经常检查它,但我不想打破构建.

小智 146

您可以WarningsNotAsErrors在项目文件中添加-tag.

<PropertyGroup>
    ...
    ...
    <WarningsNotAsErrors>618,1030,1701,1702</WarningsNotAsErrors>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

注意:612并且618都是关于过时的警告,不知道区别,但我正在处理的项目是报告已过时警告618.

  • 612和618之间的区别是ObsoleteAttribute的注释.没有注释的ObsoleteAttribute生成错误612,带有注释的生成618. (21认同)
  • 很高兴知道存在“WarningsNotAsErrors”。它应该在项目设置中可用,而无需手动编辑文件。谢谢。 (2认同)
  • 微软确实把这个搞砸了(11 年后,还没有解决问题!)。项目设置更改了“&lt;NoWarn&gt;”,这在大多数情况下效果较差,无法将“&lt;WarningsNotAsErrors&gt;”放入 UI 中。荣誉。 (2认同)

小智 12

/ warnaserror/warnaserror-:618

  • 你在哪里添加这个? (2认同)

Dre*_*kes 11

在 Visual Studio 2022 中,我们有一个新的项目属性 UI,其中包含一个编辑器。

正在建设中| 错误和警告如果将“将警告视为错误”设置为“全部”,则会出现另一个属性,该属性允许您免除将特定警告视为错误:

在此输入图像描述

这会将以下属性添加到您的项目中:

<WarningsNotAsErrors>618,1030,1701,1702</WarningsNotAsErrors>
Run Code Online (Sandbox Code Playgroud)

  • 德鲁,感谢您告诉我们!很高兴知道终于有了一个易于发现的解决方案。我正在将其更改为已接受的答案。 (2认同)

小智 5

或者更具体地说,就您的情况而言:

/warnaserror /warnaserror-:612,1030,1701,1702

这应该将所有警告视为错误,逗号分隔列表中的警告除外