2012-06-21 24 views
2

一旦我打開Code Contracts的代碼重寫器,我開始發現以前曾經工作的代碼的問題。MissingFieldException與CodeContracts

我有一個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」) Bug修復。

+0

有一個類似的問題,韋恩與結構http://stackoverflow.com/q/10542373/90475 – GregC

+0

有一個類似的問題報告給微軟:http://social.msdn.microsoft.com/Forums/en-US/codecontracts/thread/1d398221-f3fb-4048-9a7a-8ee66e9bf5da /#1d398221-f3fb-4048-9a7a-8ee66e9bf5da – GregC

回答

1

我在內部版本中解決了這個問題。它將出現在CodeContracts的下一個版本中。

編輯 以下是發行說明從Code Contracts site

發行1.5.60502。11(2013年5月2日)

  • 構建腳本修復不警告缺少合同參考組件,用於C/C++的互操作技術項目
  • 修復到VB構造提取
  • 正常調用時如何處理接口的合同泛型方法來自合同。在非空分析拆箱的
  • 修復處理(避免空DEREF)的靜態檢查的可空和拳擊約束
  • 更好地處理
  • 修復上顯示F12二傳手合同(後藤元)
  • 更強大在執行編輯器擴展的檢查
  • 減少內存消耗和ccrewrite的啓動時間
  • 處理MEF導入非無效分析屬性
  • 保留交叉裝配ACCE ss到重寫器中的易失性字段。
  • 修復合同提取器中的閉包出現在構造函數中時的錯誤。
  • 在縮寫器方法有靜態通用閉包方法時修復重寫器中的錯誤。
  • 在4.5版本的框架上支持異步。
+0

不錯的;-)我一直在努力更新發行說明,所以我可以在發佈時發佈它們。你想要一個屏幕截圖;-) –

相關問題