C# - 有选择地抑制自定义过时警告

时间:2009-06-09 05:29:25

标签: c# visual-studio-2008

我正在使用Obsolete属性(正如其他程序员所建议的那样)在使用某种方法时显示警告。

有没有办法在使用合理的地方抑制类似于CodeAnalysis'SuppressMessage的警告?

谢谢!

修改

这是针对[Obsolete("Some message")]的,因为我需要包含有关警告的一些细节。但是,一旦我将消息添加到裸#pragma warning disable 612属性,[Obsolete]就不再起作用了......

编辑2

找到正确的警告号码 - 如果您在过时属性后面有消息,则 618

所以要做我想做的事:

#pragma warning disable 618

然后在通话后

#pragma warning restore 618

感谢Jared Par和Jon Skeet指出我正确的方向!

4 个答案:

答案 0 :(得分:241)

使用#pragma warning disable

using System;

class Test
{
    [Obsolete("Message")]
    static void Foo(string x)
    {
    }

    static void Main(string[] args)
    {
#pragma warning disable 0618
        // This one is okay
        Foo("Good");
#pragma warning restore 0618

        // This call is bad
        Foo("Bad");
    }
}

之后恢复警告,这样您就不会错过“不良”电话。

答案 1 :(得分:122)

intent 是禁用过时用法的警告,无论该构造是否标有[Obsolete][Obsolete("Message")]。因此,请同时使用CS0612 CS0618

#pragma warning disable 612, 618 

...

#pragma warning restore 612, 618 

答案 2 :(得分:18)

首先如何获取警告/错误编号

  1. 重建您的项目。
  2. 转到 Output 窗口。
  3. 查找要抑制的警告/错误行。
    例如:
    C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS 0162 : Unreachable code detected
  4. 在“CS”之后复制数字部分
  5. 然后以Jon Skeet says继续。
  6. (更好总是继续Jon Skeet说...)

答案 3 :(得分:9)

您正在寻找#pragma警告禁用指令

基本上,您在.cs文件中的调用站点上方添加以下命令。

#pragma warning disable 612
SomeMethodCall

612是用于调用过时方法的错误消息ID