Ale*_*kiy 4 .net c# code-contracts visual-studio-2015
我从原始站点安装了代码合同,并尝试编写一些示例代码.但R#只是写道Method invocation is skipped.当我看反编译的源时,我看到该方法是有条件的:CONTRACTS_FULL必须定义常量.我检查Code Contracts了项目设置中选项卡中的所有内容,但似乎无法正常工作.
该用户文档(PDF)这样说:
2份合同
合同类的大多数方法都是有条件编译的,这意味着只有在定义了特殊符号(全合同符号)时,编译器才会发出对这些方法的调用.那个符号是
CONTRACTS_FULL.这允许在不使用#ifdef的情况下在代码中编写合同,但是产品不同的构建,一些具有契约,一些没有.如果您使用的是Visual Studio 2008或更高版本(第6节)或msbuild(第A.1节),则无需自行定义此符号.相反,当您使用提供的UI启用运行时或静态检查(或项目中的属性或msbuild参数中的/ p定义)时,构建会自动定义此符号并执行适当的重写操作.如果您使用自己的构建机制,那么如果希望将合同发送到程序集中以供工具进一步使用,则需要定义完全合同符号.
所以代码契约方法是有条件地编译的,基于它的存在CONTRACTS_FULL.
如果您检查Perform runtime contract checking或Perform static contract checkingVisual Studio将确保CONTRACTS_FULL已定义,但作为参数传递给构建过程而不是作为项目中定义的常量.因此,您需要检查这些框以打开合同检查.(另一种方法是使那些复选框导致CONTRACTS_FULL在项目中定义常量,但是在保持文本字段及其两个复选框同步时你会遇到问题.)
因此,就任何其他工具(包括Resharper)而言,这些方法Contract都是以未定义的常量为条件的.您可以忽略警告或手动定义常量.
| 归档时间: |
|
| 查看次数: |
590 次 |
| 最近记录: |