我想知道如何正确使用代码契约.NET核心,到目前为止我尝试将CC添加到我的项目中,编译和调试。我对消息感到困惑,该消息出现在每次使用的呼叫中Contract.Requires
,以及通过谷歌搜索找到的信息。
该消息指出:
必须使用代码契约二进制重写器 (CCRewrite) 重写程序集,因为它正在调用Contract.Requires<TException>
and CONTRACTS_FULL
符号被定义。删除任何明确的定义CONTRACTS_FULL
从您的项目中提取符号并重建。 CC重写....
正如我所看到的,项目属性中没有 CC 选项,而且 CC 的 Github 存储库几乎已经失效。有什么方法可以在.NET Core中成功使用CC吗?
如果没有,有什么简单的方法可以替换它们吗?我用Contract.Requires
and ContractClassAttribute
。更换Contract.Requires
是显而易见的,但是合约类属性让我大吃一惊:-)
答案是:.NET Core 不再支持代码契约。它在 .NET Core 2.0 中可用,但不再维护.
请参阅官方声明文档页面 https://learn.microsoft.com/en-us/dotnet/framework/debug-trace-profile/code-contracts:
Note
.NET 5+(包括 .NET Core)不支持代码协定
版本)。考虑使用可空引用类型 https://learn.microsoft.com/en-us/dotnet/csharp/nullable-references反而。
也在 Github 线程上(.NET Core 今后是否会支持代码契约?第6361章 https://github.com/dotnet/docs/issues/6361):
我们不久前就停止了对代码合约的投资。我们添加了
作为我们兼容性工作的一部分,它已迁移到 .NET Core 2.0,但我
不会推荐使用它的新代码。
FWIW,我们已经研究了许多使用它们的代码库,看起来
绝大多数的使用都是关于空处理的。这个的替代品是
C# 8 的可空引用类型正在进行中。
— Immo Landwerth,Microsoft .NET 团队的项目经理。https://twitter.com/terrajobst https://twitter.com/terrajobst
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)