我并没有定义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也~
相关文章推荐
- c#定义全局条件编译符号
- 为什么会有#ifdef ...#else...#endif等条件编译语句
- 头文件、声明、定义以及条件编译为什么不能定义变量的个人理解
- 提高C#编程水平的50个要点 之四“使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if”
- 用#pragma once或者条件编译防止类重复定义的一个情景
- [PHP] PHP源码中的条件编译定义
- 用Code::Blocks和MinGW编译了第一个基于SQLite C API的小程序
- 条款4:使用Conditional特性代替#if条件编译
- Oracle使用like时要注意空条件的情况,请尽量使用以下语句(对含逗号或特定符号的查询)
- VS设置多个条件编译符号
- 【C#高效编程50例】条目4: 使用Conditional特性而不是#if条件编译
- Object-c基础之四:预定义,条件编译,数组
- [导入]利用Attribute特性简化多查询条件拼接sql语句的麻烦
- VS设置多个条件编译符号
- 阅读源码时有很多的条件编译语句,看起来不爽,怎么办?
- 如何判断平台工具集去做条件编译(VC++目录、预处理器定义、$(PlatformToolsetVersion))
- IntelliJ IDEA 4 新特性 之 On-the-Fly Code Analysis(动态代码分析)
- VC编译错误:一个或多个多重定义的符号
- 基于proteus的51单片机仿真实例十五、51单片机的C语言条件编译应用实例
- Delphi 的编译指令(3): 常用的预定义条件标识符