代码合约使用太多会减慢编译过程。 其次代码合同是调试模式的一部分,只有当我设置代码合同并始终在发布模式下编译代码时,代码合同才会工作?我想它不会这意味着开发人员将被迫在调试模式下工作,并且当您创建设置时,将其设置为释放模式。我对吗?从MS Devlab代码合同和编译
Q
代码合同和编译
2
A
回答
0
4
由于CodeContracts的工作方式,编译速度有所减慢。有一个IL重写器,它根据您指定的合约将代码注入您的方法。这发生在C#编译器出现并为您的程序集生成IL之后。
运行时性能差异非常小,不会以明显的方式影响您的代码。除非你正在开发一些实时股票交易系统,否则我真的不会担心它。
就禁用生产中的代码合同而言,我宁愿有代码合同的附加保护,以避免错误。代码合同中的一个错误会告诉你究竟违反合同的地点和原因,而不是因为某些不良数据在调用堆栈树上传入5个级别而不得不深入一些深层调用堆栈。
如果您正在使用或正在计划使用Contract.Requires<TException>
并且未启用'运行时合同检查',那么IL重写程序需要绑定到代码合同的使用时会出现运行时失败。然后您将被要求启用运行时合同检查以使其发挥作用。
恕我直言,使用Contract.Requires<TException>()
比Contract.Requires()
更有用,因为您可以控制抛出的异常类型。
编辑:我忘了添加的一件事是IL重写器完全独立于C#编译器,并且两者之间没有依赖关系。
相关问题
- 1. 代码合同和以编程方式编译项目
- 2. Java代码和JIT编译
- 3. JS编译器同时编写前端和后端代码
- 4. C#代码合同编译时间 - 我该如何改进它?
- 5. 代码合同编译器如何认为这可能为空?
- 6. 代码合同和异步
- 7. Pex和代码合同
- 8. Moq和代码合同
- 9. GMP-汇编代码?编译代码
- 10. 编译Yacc代码
- 11. C代码编译
- 12. 编译vhdl代码
- 13. 编译C代码
- 14. 代码不编译
- 15. 反编译汇编代码
- 16. 包含编译代码和解释代码的“混合”Python模块的示例?
- 17. 用/ MT编译的混合代码和/ MD
- 18. 如何编译混合的C和C++代码?
- 19. C++和cublas代码的混合不编译
- 20. 用C++编译器编译c代码
- 21. 编译错误的代码的编译
- 22. 反编译预编译源代码ASP.NET
- 23. 在ubuntu中编译/编译源代码
- 24. 货物编码相同的代码:虚假编译时错误?
- 25. 合同异步和同步代码
- 26. dotnet dll反编译和更改代码
- 27. 安装OpenGL ES和编译代码Android
- 28. erlang-如何编译和代码
- 29. Haxe编译为C++和JS源代码
- 30. 用caffe和Eigen编译C++代码
微软的.Net代码合同? – 2011-05-27 18:32:43
是的,请标记语言和/或平台。 – 2011-05-28 20:24:34
@ Ken,Henk:[code-contracts]标签专门用于微软的Code Contracts项目。 – porges 2011-05-30 07:11:48