我最近通过代码合同迁移了很多手动前提条件测试和异常抛出。我一直使用Microsoft.Contracts.dll
程序集,而不是升级到.NET 4,所以我可以再坚持.NET 3.5(这是一个由.NET 3.5和.NET 4程序集使用的库)。我已经在Visual Studio 2010中设置了合同重写器,并且合同工作得很好。.NET 3.5的代码合同混淆了VS10的调试器
但是,由于我已经完成了这个转换,我注意到调试器在有合同的方法中很有趣,特别是在有ContractInvariantMethod的类中。执行光标似乎并不总是与突出显示的行相匹配,某些断点无法被命中,并且我有一种方法,调试器无法告诉局部变量名称,并显示像CS$1$0000
这样的东西。这是在调试版本中。
在.NET 3.5到VS10中有关于使用代码合约Microsoft.Contracts.dll
的已知问题吗? .NET 4中的代码合同是否会出现类似的问题?
[编辑]这个问题使我创建微软连接错误:https://connect.microsoft.com/VisualStudio/feedback/details/573983/code-contract-rewriting-messes-up-local-variable-names-in-iterator-methods-while-debugging
[OT]真棒用户名:) – roundcrisis 2010-07-07 14:24:13