代码之家  ›  专栏  ›  技术社区  ›  Trillian

.NET3.5的代码契约把VS10的调试器搞砸了

  •  7
  • Trillian  · 技术社区  · 16 年前

    我最近迁移了很多手动的前提条件测试和异常抛出代码契约。我没有升级到.NET4,而是使用 Microsoft.Contracts.dll 程序集,这样我就可以继续使用.NET3.5了(这是一个供.NET3.5和.NET4程序集使用的库)。我在visualstudio2010中设置了contracts rewriter,这些contracts可以正常工作。

    CS$1$0000 . 这在调试版本中。

    Microsoft.Contracts.dll 在.NET 3.5到VS10中?

    [编辑]这个问题导致我在Microsoft Connect上创建了一个错误: https://connect.microsoft.com/VisualStudio/feedback/details/573983/code-contract-rewriting-messes-up-local-variable-names-in-iterator-methods-while-debugging

    2 回复  |  直到 16 年前
        1
  •  1
  •   p.s.w.g    12 年前

    我希望你知道什么是契约重写意味着额外的代码生成的飞行没有任何源代码的编译器锁定。由于CLR有这么多不同的元素,有相当多的事情调试器要么根本不会做,要么会变得混乱,只有那些具有广泛影响的成熟语言特性才能获得完整的调试器支持的预算。比如lambda表达式。

    这并不是说归档一个bug不是为了一个好的理由,只是当你使用一个甚至还没有完全开发的方面时,你不应该期望任何事情变得更好。作为早期采用者总是要付出这样的代价,但也有吹嘘的权利:-)

        2
  •  0
  •   cRichter    16 年前

    请记住,代码合同目前不适用于Post-conditions&多线程。 限制合同只做前提重写。

    推荐文章