VisualStudio 警告级别的含义?

在 Web 应用程序项目的构建选项卡上,我有一个名为“警告级别”的设置。我可以设置一个从0到4的值。这些值是什么意思?值0是否会更严格并生成更多警告,反之亦然?我还没找到任何相关文件,但也许我找错地方了。

61767 次浏览

This link shows you the definitions of the warning levels (I'm assuming you are using C# code in your web project). Level 5 is the most strict.


  • 0: Turns off emission of all warning messages.
  • 1: Displays severe warning messages.
  • 2: Displays level 1 warnings plus certain, less-severe warnings, such as warnings about hiding class members.
  • 3: Displays level 2 warnings plus certain, less-severe warnings, such as warnings about expressions that always evaluate to true or false.
  • 4: Displays all level 3 warnings plus informational warnings. This is the default warning level at the command line.
  • 5: Displays level 4 warnings plus additional warnings from the compiler shipped with C# 9.0.

Anything greater than 5 is treated as 5.

0 turns off warnings completely, while 4 is the most verbose level. See the documentation here which has the same warning levels.

Higher is stricter. It can be annoying to see all the warnings that may or may not mean much to your app, but taking the time to clear them up can teach you a lot.

For example setting a warning level to 4 or /W4 means the compiler will treat all warnings as errors. It's mostly how the compiler reacts when it sees something that it doesn't feel good about. And, by the way, a level of 0 turns of all warnings.

You can check Microsoft's levels here. Level 0 is essentially none while level 4 will be the most strict.

Additionally, F# goes up to Warning Level 5:

--warn:warning-level

Sets a warning level (0 to 5). The default level is 3. Each warning is given a level based on its severity. Level 5 gives more, but less severe, warnings than level 1.

Level 5 warnings are: 21 (recursive use checked at runtime), 22 (let rec evaluated out of order), 45 (full abstraction), and 52 (defensive copy)

https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-options