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
以下是如何获得警告/错误号码 :
- 重build你的项目。
- 转到输出窗口。
- 查找要压制的警告/错误的行。
例如:
C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS
0162
: Unreachable code detected
- 在 “
CS
” 后复制号码部分。 - 然后按照Jon Skeet的说法行事。
(最好总是像Jon Skeet说的那样继续下去)
您正在寻找#pragma
warning disable指令
基本上你在.cs文件的调用站点上面添加以下命令。
#pragma warning disable 612 SomeMethodCall
612是调用过时方法的错误消息ID