如何取消定义符号CONTRACTS_FULL

本文关键字:符号 定义符 CONTRACTS FULL 定义 何取消 取消 | 更新日期: 2023-09-27 18:01:46

如果在项目的"代码合同"选项卡中启用合同检查属性页。

-C#5.0在Nutshell中(第518页(

我想禁用/取消定义该符号,但它不会出现在项目设置中Build选项卡的Conditional compilation symbols字段中。

(我对完全禁用代码契约不感兴趣!我的意思只是,将契约检查设置为None不是一个解决方案(。

如果重要的话,我之所以要这样做,是因为在我的发布版本中,我只想抛出Contract.Requires<TException>,而根本不想抛出ContractException

我发现的一个"解决方案"是将#undef CONTRACTS_FULL放在每个文件的第一行,它修复了它,但实际上这样做会很糟糕。

(到目前为止,BTW VS还没有定义CONTRACTS_FULL,我不得不自己定义它,但我想有些设置意外更改了(

如何取消定义符号CONTRACTS_FULL

您不能运行合约工具并取消定义CONTRACTS_FULL符号。工具取决于所定义的工具。如果你试图强行这样做,什么都不会起作用。这就是我们在msbuild脚本中自动定义符号的原因。

代码约定工具的用户永远不应该手动定义或取消定义CONTRACTS_FULL符号,因为它是一个工具控制的变量。

我读过那本书,有一个契约级别只使用了contract。需要。这是之前的选项,但它肯定在书中的某个部分。然而,我无法帮助您进行全局不败的CONTRACTS_FULL。很抱歉我认为,尽管在合同检查级别上,它是自动取消防御的。

编辑:是的,你需要把它放在一级(ReleaseRequired(。