一旦我打開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修復。
有一個類似的問題,韋恩與結構http://stackoverflow.com/q/10542373/90475 – GregC
有一個類似的問題報告給微軟:http://social.msdn.microsoft.com/Forums/en-US/codecontracts/thread/1d398221-f3fb-4048-9a7a-8ee66e9bf5da /#1d398221-f3fb-4048-9a7a-8ee66e9bf5da – GregC