【问题标题】:Documentation for C# Project Property: `<Features>strict</Features>`C# 项目属性的文档:`<Features>strict</Features>`
【发布时间】:2021-08-30 01:36:06
【问题描述】:

我想开发 C# 并打开所有可能来自 Microsoft 的警告,我发现 this answer 说要将 &lt;Features&gt;strict&lt;/Features&gt; 添加到我的 .csproj 文件中。

但是,在我开始使用它之前,我想了解一下它启用了哪些警告以及它可能产生的其他副作用。

很遗憾,我找不到任何关于它的文档。

我认为它在 Microsoft 的文档中某处,但我无法在任何地方找到它。

更新:我发现 an article 关于这个属性的引用如下:

请注意,此标志未记录在案且不为人所知。

微软一开始就没有记录这个功能吗?

【问题讨论】:

  • 这不是 Microsoft 文档,但它可能会有所帮助 meziantou.net/csharp-compiler-strict-mode.htm
  • 它已被Warnversion Warning Waves 取代。您可以设置级别 5(或 9999),这在 Project 的选项中是无法做到的。
  • 如果您使用新的编译器,则设置&lt;WarningLevel&gt;(在旧的编译器中实际上不能使用此级别:Compiler Error CS1900),否则设置为&lt;Features&gt;strict&lt;/Features&gt;。如果你真的需要它。 -- 如果你自己发布一个答案可能会更有趣,这样你就可以解释为什么你觉得需要启用这个功能,它试图解决什么样的问题以及什么样的项目(编译器版本,.Net 版本)将是使用它。
  • 请注意,代码分析/分析器使用strict 功能来发出警告,然后由扩展过滤。您可能会收到通知不存在问题的警告,并且您无法摆脱它们。

标签: c# compiler-warnings csproj strict code-documentation


【解决方案1】:

感谢所有通过发布有用文章和文档的链接来提供帮助的人。

目前,我已决定创建一个名为 Directory.Build.props 的文件,其内容如下:

<Project>
  <PropertyGroup>
    <Features>strict</Features>
    <WarningLevel>9999</WarningLevel>
  </PropertyGroup>
</Project>

注意: 对于 .NET Core,WarningLevel 的最大值为 4。对于 .NET 5 和更高版本,它的最大值为 9999

然后我会将这个文件复制并粘贴到我所有解决方案文件的根目录中。

我的目标是找到一种简单的方法来为任何项目启用所有 C# 警告,这样我就可以放心地编写代码,因为我没有做任何我不应该做的事情。

虽然我从测试中获得了最大的信心,但每种语言都有自己的约定和最佳实践,如果不遵循这些约定和最佳实践,通常会产生警告,这是我启用这些功能的动机。

这种方法应该适用于 Visual Studio Code 和 Visual Studio,当我在我的环境中使用最新的 .NET SDK 时,它应该适用于所有现代 C# 环境和任何 IDE。

【讨论】:

    猜你喜欢
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多