C# – select性地禁止自定义过期警告

如果使用某个方法,我使用Obsolete属性(就像其他程序员build议的那样)显示警告。

有没有一种方法来抑制类似CodeAnalysis'SuppressMessage的警告在使用是合理的点?

谢谢!

编辑

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

编辑2

find正确的警告号码 – 如果您在过时属性后面有消息,则为618

所以要做我想做的事情:

#pragma warning disable 618

然后在通话之后

#pragma warning restore 618

感谢Jared Par和Jon Skeet指引我朝着正确的方向发展!

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

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

意图是禁用过时使用的警告,而不pipe构造是否标有[Obsolete][Obsolete("Message")] 。 所以同时使用CS0612 CS0618 :

 #pragma warning disable 612, 618 ... #pragma warning restore 612, 618 

以下是如何获得警告/错误号码

  1. 重build你的项目。
  2. 转到输出窗口。
  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的说法行事。

(最好总是像Jon Skeet说的那样继续下去)

您正在寻找#pragma warning disable指令

基本上你在.cs文件的调用站点上面添加以下命令。

 #pragma warning disable 612 SomeMethodCall 

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