.NET 3.5 的代码契约搞乱了 VS10 的调试器

2023-11-22

我最近使用代码契约迁移了很多手动前提条件测试和异常抛出。我没有升级到 .NET 4,而是使用Microsoft.Contracts.dll程序集,这样我就可以坚持使用 .NET 3.5 更长的时间(这是一个由 .NET 3.5 和 .NET 4 程序集使用的库)。我已经在 Visual Studio 2010 中设置了合同重写器,合同工作得很好。

然而,自从我完成了该切换后,我注意到调试器在具有契约的方法中表现得很有趣,尤其是在具有 ContractInvariantMethod 的类中。执行光标似乎并不总是与突出显示的行匹配,某些断点无法被命中,并且我有一种方法,其中调试器无法告诉本地变量名称并会显示类似的内容CS$1$0000。这是在调试版本中。

使用代码合约是否存在已知问题Microsoft.Contracts.dll在 .NET 3.5 到 VS10 中? .NET 4 中的代码契约是否会出现类似的问题?

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


我希望你知道合约重写意味着什么——动态生成的额外代码,没有任何源代码可供编译器锁定。由于 CLR 具有如此多不同的元素,因此调试器要么根本不会做很多事情,要么会感到困惑,只有具有广泛影响的完整语言功能的事情才能获得完整调试器支持的预算。例如 lambda 表达式。

这并不是说提交错误没有好的理由,只是当您使用尚未完全开发的方面时,您不应该期望任何事情都会变得更好。成为早期采用者总是要付出这样的代价,但也有吹牛的权利:-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 3.5 的代码契约搞乱了 VS10 的调试器 的相关文章

随机推荐

  • 如何创建精灵图像

    我正在尝试创建一个非常基本的精灵图像 首先 我有一个现有的图像 宽度 100px 高度 100px 我将循环浏览该图像 10 到 100 次 每次都将其放置在前一个图像旁边的精灵上 精灵的宽度限制为 3000 像素 将图像彼此相邻放置很好
  • Android 日期选择器材质风格

    我已经在我的片段上实现了日期选择器 这是代码 edittext from setOnClickListener new OnClickListener Override public void onClick View view final
  • 我如何通过 googledrive api 从 googledrive 获取多个文件?

    我想知道如何从谷歌驱动器获取多个文件 我在参考文献中搜索了此内容 但没有找到此信息 我正在构建一个 Web 应用程序 它将与驱动器通信并检索要下载的 zip 文件的链接 文件的 Zip 我正在使用 php 和 api v2 目前 Drive
  • HTML5 音频元素在 IE10 中不起作用,但在 Chrome 中起作用。为什么?

    HTML5 音频在 IE10 中不起作用 但在 Chrome 中起作用 任何想法 使用的 HTML 如下 Win8或RT上的IE10不支持wav 但是 IE10 Mobile支持 我附上了屏幕截图 以便您可以了解 IE10 都支持哪些格式
  • Rails:在数据库中存储二进制文件[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 使用Rails 是否有理由将附件 可以是任何时间的文件 存储在文件系统中而不是数据库中 数据库对我来说似乎更简单 无需担心文件系统路径 结构等 您只需查看 blob 字段即可 但大多数人似
  • 执行图像减法时退出代码 139

    我正在使用 python 执行图像减法 我有 numpy 数组形式的图像 包含所有图像的列表的大小为1000 列表中的每个numpy数组都是360 640类型 当帧数在 300 左右时 帧减法是正确的 def find der frames
  • 未定义的方法“protect_against_forgery?”对于 #<#<类:0x0

    我的routes rb 文件中有以下代码 resources users do member do get following followers end collection do put activate email end end 我
  • 如何 grep 查找整个单词

    我正在使用以下命令来 grep 子目录中的内容 find xargs grep s s text 然而 这也会发现类似的东西
  • JVM - 堆和栈

    每当加载一个类时 什么存储在堆中 什么存储在堆栈中 另外线程驻留在哪里 引用类型位于堆中 任何原始类型数据和对堆上值的引用 方法的参数 局部变量 都在堆栈上 每个线程都有自己的堆栈 应用程序中的所有线程共享相同的堆
  • 在哪里可以找到 Jet 4.0 引擎使用的特定类型 SQL 的文档?

    我认为这与 MS Access 使用的相同 但我认为与 MySQL 和其他人使用的不同 我需要 SQL 语言的这种特定 种类 或 子集 的文档 Here是最新版本的 Access SQL 参考 Access 2010 然而 Remou 的回
  • C# 中空合并赋值运算符的实际用途?

    C 中的空值 C 的一项新功能使我们能够去掉代码中的空值 with 可为空的引用类型 我们鼓励添加
  • python中求最小值和最大值

    我必须要求用户输入一些数字 然后打印大小 总和 平均值 最小值和最大值 我可以得到前三件事 但我被困在最小和最大的一个上 我遇到的问题是我无法使用sort 因为我需要使列表成为整数一 但你不能使用整数列表split 这是我的代码 numbe
  • 有没有更好的方法在 bash 中运行命令 N 次?

    我偶尔会运行这样的 bash 命令行 n 0 while n lt 10 do some command n n 1 done To run some command连续多次 在本例中为 10 次 Often some command实际上
  • “错误:找不到符号 HashMap”[重复]

    这个问题在这里已经有答案了 尝试创建 或者更确切地说学习 a HashMap以下方式 public class Demo public static void main String args System out println Star
  •  编码问题

    我正在使用 PHP 开发一个网站 这些奇怪的字符 出现在我的页面上 就在它的顶部 我的代码是这样的 但是当我在浏览器中查看源代码时 它显示
  • 实体框架失去 Sql DateTime 精度

    我正在使用 Entity SQL 查询我的 EDM 但我的 DateTime 值失去了毫秒精度 例如 2011 7 20 12 55 15 333 PM 更改为 2011 7 20 12 55 15 000 PM 我已经确认在 SQL 中毫
  • 按子数组键值对多维数组进行排序

    为此发布了类似的问题和答案 但没有一个与我的数组的结构完全匹配 所以如果我错过了一些东西 我深表歉意 这是由 WordPress wpdb 类生成的数组 Array 0 gt Array meta id gt 37850 post id g
  • 如何在纯SQL中编写空安全比较“<=>”?

    在Mysql中有一个比较运算符是空安全的 我在 Java 程序中创建准备好的语句时使用它 如下所示 String routerAddress getSomeValue String sql SELECT FROM ROUTERS WHERE
  • 正则表达式匹配字母字符[重复]

    这个问题在这里已经有答案了 我有这个正则表达式 if cadena matches a zA Z return true 它接受从 A 到 Z 的小写和大写 还接受空格 但这仅适用于英语 例如 在加泰罗尼亚语中 我们有 字符 此外 我们还有
  • .NET 3.5 的代码契约搞乱了 VS10 的调试器

    我最近使用代码契约迁移了很多手动前提条件测试和异常抛出 我没有升级到 NET 4 而是使用Microsoft Contracts dll程序集 这样我就可以坚持使用 NET 3 5 更长的时间 这是一个由 NET 3 5 和 NET 4 程