Nir*_*rMH 14 c# visual-studio-2010 code-contracts
我有一个基本的问题,可能是这么明显,但由于某种原因,我似乎无法成功安装和使用代码合同.
我从MSDN下载了软件包,按照在线文档安装了它,但我仍然收到以下代码语句的IDE警告:
Contract.Requires(inputParameter != "");
IDE警告是:
"跳过方法调用.编译器不会生成方法调用,因为该方法是有条件的,或者是没有实现的部分方法"
在启用代码合同的过程中我遗漏了什么?我正在使用VS2010 Ultimate SP1
条件编译全部来自编译器预处理器定义.这与DEBUG常量使用的方法相同,尽管Visual Studio隐藏了复选框后面的定义.这是一种有效的方法,因为当没有定义那些符号时,根本不调用这些方法; 重要的是,传递的参数也不会被评估,因此您可以在代码合同中使用相对昂贵的检查,而不必担心这些检查会减慢发布版本.
合同类中的大多数方法都是有条件编译的; 也就是说,只有在使用#define指令定义特殊符号CONTRACTS_FULL时,编译器才会发出对这些方法的调用.CONTRACTS_FULL允许您在代码中编写合同而无需使用#ifdef指令; 你可以生产不同的版本,有些是契约,有些是没有.
虽然这涉及#define在代码中使用以打开代码合同:
#define CONTRACTS_FULL
Run Code Online (Sandbox Code Playgroud)
正如@NirMH在评论中所说的那样,通常最好在项目的条件编译符号中定义它,这样你就可以将它用于某些构建,而关闭其他构建.
请注意,这CONTRACTS_FULL是您唯一的选择,尽管它的名称显然是为了允许将来进行更细粒度的控制.
| 归档时间: |
|
| 查看次数: |
6572 次 |
| 最近记录: |