【问题标题】:Is it possible to disable specific compiler warnings?是否可以禁用特定的编译器警告?
【发布时间】:2024-01-05 18:10:01
【问题描述】:

我试图抑制特定的编译器警告,即System.Data.OracleClient.OracleConnection' is obsolete。我在这里遇到了这些问题:

How to disable specific warnings for the entire solution?

Globally suppress c# compiler warnings

...但它们似乎不适用于 VS2013。当我转到我的项目属性时,我没有看到 Build 选项卡。我看到一个Compile 选项卡,但它似乎没有指定要禁止显示的警告消息的地方。我在那里看到一个名为 Warning configurations 的部分,但我没有看到我正在寻找的警告。

更新:事实证明,我正在尝试为 VB.NET 执行此操作。由于所选答案提供的链接,您必须编辑项目文件的 XML 并在 <NoWarn></NoWarn> 标记中提供警告代码。但是,您必须知道隐藏在错误列表中的警告代码。获得它的一种方法是打开输出窗口并构建项目。就我而言,警告代码是40000。它显示为BC40000,但我不得不删除BC。重建项目后,警告消息消失了。

【问题讨论】:

    标签: visual-studio visual-studio-2013 compiler-warnings suppress-warnings


    【解决方案1】:

    要禁止 Visual C# 或 F# 的特定警告:

    1. Solution Explorer 中,选择您要禁止显示警告的项目。
    2. 在菜单栏上,选择查看属性页
    3. 选择构建页面。
    4. 抑制警告框中,指定要抑制的警告的错误代码,用分号分隔,然后重新生成解决方案。

    查看here 了解有关如何禁止针对 Visual C++ 和 Visual Basic 的特定警告的更多信息。


    另一种方法是使用#pragma warning可以启用或禁用某些警告。:

    #pragma warning disable warning-list
    #pragma warning restore warning-list
    

    警告列表

    以逗号分隔的警告编号列表。单独输入数字,不带“CS”前缀。 如果未指定警告编号,则 disable 禁用所有警告, restore 启用所有警告。

    【讨论】:

    • 该链接解释了我做错了什么。我正在使用 VB.NET。请参阅我的答案中的更新。
    • 有趣的是,这些天自动生成的#pragmas 包含 CS 前缀
    【解决方案2】:

    是的,有可能。

    #pragma warning disable 'warning-number-list'
    

    其中warning-number-list 是要禁用的警告编号的逗号分隔列表,例如1004

    这将禁用从声明点到当前文件末尾的警告,除非重新启用:

    #pragma warning restore 'warning-number-list'.
    

    这些编译指示内嵌在您希望禁用/恢复警告的位置的代码中。

    我相信项目属性选项卡上还有一个地方可以指定要禁用的警告,正如您所提到的。

    【讨论】:

      最近更新 更多