您的位置:首页 > 其它

我并没有定义CODE_ANALYSIS编译符号,为什么基于此符号条件编译的类、特性、语句仍在?

2011-01-22 10:29 357 查看

发现问题

您可以通过Reflactor或在源代码中放置



#if CODE_ANALYSIS
            Console.WriteLine("CODE_ANALYSIS");
#endif


来发现此问题。





并且项目属性->代码分析页没有勾选生成时启用代码分析(定义CODE_ANALYSIS常量)。



问题原因

如果你的项目属性里有Code Contracts页,则取消勾选Perform Runtime Contracts Checking,重新生成解决方案,此时

#if CODE_ANALYSIS
            Console.WriteLine("CODE_ANALYSIS");
#endif


应当变为灰色,CODE_ANALYSIS已没有定义。此现象在《Code Contracts User Manual》2010年11月15日版中并没有指出。(没搜索到CODE_ANALYSIS关键字)



后记:如果取消勾选Perform Runtime Contracts Checking,则运行时就不检查协定了。如果运行过代码分析,并在源代码中用SuppressMessage特性阻止建议,那么要么运行时就不检查协定,要么发布版仍携带SuppressMessage特性。二者不可得兼,于我,舍检查协定而去SuppressMessage也~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: