我最近通過代碼合同遷移了很多手動前提條件測試和異常拋出。我一直使用Microsoft.Contracts.dll
程序集,而不是升級到.NET 4,所以我可以再堅持.NET 3.5(這是一個由.NET 3.5和.NET 4程序集使用的庫)。我已經在Visual Studio 2010中設置了合同重寫器,並且合同工作得很好。.NET 3.5的代碼合同混淆了VS10的調試器
但是,由於我已經完成了這個轉換,我注意到調試器在有合同的方法中很有趣,特別是在有ContractInvariantMethod的類中。執行光標似乎並不總是與突出顯示的行相匹配,某些斷點無法被命中,並且我有一種方法,調試器無法告訴局部變量名稱,並顯示像CS$1$0000
這樣的東西。這是在調試版本中。
在.NET 3.5到VS10中有關於使用代碼合約Microsoft.Contracts.dll
的已知問題嗎? .NET 4中的代碼合同是否會出現類似的問題?
[編輯]這個問題使我創建微軟連接錯誤:https://connect.microsoft.com/VisualStudio/feedback/details/573983/code-contract-rewriting-messes-up-local-variable-names-in-iterator-methods-while-debugging
[OT]真棒用戶名:) – roundcrisis 2010-07-07 14:24:13