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

是否有一种方法可以在合理使用的情况下抑制类似CodeAnalysis的SuppressMessage的警告?

这需要为[Obsolete("Some message")]工作,它会生成警告618,而没有消息的普通[Obsolete]属性会生成警告612。


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

http://msdn.microsoft.com/en-us/library/441722ys (VS.80) . aspx

实际上,您可以在.cs文件的调用站点上方添加以下命令。

#pragma warning disable 612
SomeMethodCall

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


使用#pragma警告禁用:

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");
    }
}

事后恢复警告,这样你就不会错过“坏”电话。


其目的是禁用对过时用法的警告,无论构造是否标记为[obsolete]或[obsolete ("Message")]。所以同时使用CS0612和CS0618:

#pragma warning disable 612, 618 

...

#pragma warning restore 612, 618 

以下是如何在第一时间获得警告/错误编号:

重新构建项目。 进入“输出”窗口。 查找要抑制的警告/错误所在行。 例如: c:\用户\用户名\文档\ visual Studio 2010\Projects\Projectname\Classname.cs(202,7):警告CS0162:检测到不可达代码 复制“CS”后面的数字部分。 然后按照乔恩·斯基特说的去做。

(最好总是像乔恩·斯基特说的那样……)