使用CodeContracts的MissingFieldException

时间:2012-06-21 16:47:16

标签: c# volatile code-contracts

一旦我打开代码合同的代码重写器,我就开始看到以前用过的代码存在问题。

我有一个protected volatile bool成员字段,从我继承的类中的其他程序集中可以看到。在我的程序集上启用ccrewrite后,对该字段的访问现在抛出了一个MissingFieldException。

我知道以这种方式公开字段是不好的风格。一旦我更改为公开属性和/或删除易失性标记,问题就会消失。

我目前没有100%的代码覆盖率。

我的问题是,我如何仍然依赖代码合同,但我的代码是否像之前一样工作?如何找到行为发生变化的所有地方?

代码合约版本1.4.50327.0

Microsoft (R) .NET Contract Rewriter Version 1.4.50327.0

编辑在代码合同中已经完成了一些工作,但发行说明并不令人敬畏。具体而言,尚不清楚修复了什么。我在引用:

  

发布1.4.51019。0(2012年10月19日)       修复了VS2012中任务管理器的更多问题。       修复了CCDoc中的一个错误。       其他杂项错误修复。

     

发布1.4.50910.0(2012年9月10日)       修复了任务管理器,使其在VS2012中正确运行:静态检查器现在在后台运行,绘制了波浪形,并且合同建议出现在错误列表中。       更新了安装程序,以便" devenv / setup"安装后不再需要手动运行。它现在作为安装的一部分自动完成。 (这使得安装需要批次更长...)       修复了CCDoc中的几个错误。

     

发布1.4.50813。1(2012年8月13日)       错误修复(无处不在!)。       性能改进(静态检查器)。       精确改进(静态检查器)。       修复了安装程序和构建文件。

     

发布1.4.50327.0(2012年3月27日)       VS2012支持! (但是你需要在安装后手动运行" devenv / setup")       错误修复。

1 个答案:

答案 0 :(得分:1)

我在内部版本中修复了这个问题。它将出现在CodeContracts的下一个版本中。

修改的 以下是Code Contracts site的发布说明:

发布1.5。60502。11(2013年5月2日)

  • 构建脚本修复程序以不警告缺少C / C ++互操作项目的合同引用程序集
  • 修复VB构造函数提取
  • 从合同中调用时,正确处理接口契约中的泛型方法。
  • 修复非空分析中的unbox处理(避免null deref)
  • 更好地处理静态检查器中的可空和装箱约束
  • 修复以显示F12上的setter合约(转到元数据)
  • 更强大的检查编辑器扩展的实现
  • 减少内存消耗和ccrewrite的启动时间
  • 处理非空分析中的MEF导入属性
  • 保留对重写器中易失性字段的跨程序集访问。
  • 修复构造函数中存在闭包时合同提取器中的错误。
  • 当缩写器方法具有静态通用闭包方法时,修复重写器中的错误。
  • 支持4.5版本框架的异步。