私は最近、コード コントラクトを使用して、多くの手動の前提条件テストと例外スローを移行しました。.NET 4 にアップグレードする代わりに、Microsoft.Contracts.dll
アセンブリを使用していたので、.NET 3.5 をもう少し使い続けることができました (これは、.NET 3.5 アセンブリと .NET 4 アセンブリの両方で使用されるライブラリです)。Visual Studio 2010 でコントラクト リライターをセットアップしましたが、コントラクトは問題なく動作します。
ただし、その切り替えを行ってから、コントラクトを使用するメソッド、特に ContractInvariantMethod を使用するクラスで、デバッガーの動作がおかしくなることに気付きました。実行カーソルが強調表示された行と常に一致するとは限らず、一部のブレークポイントがヒットしないため、デバッガーがローカル変数名を認識できず、CS$1$0000
. これはデバッグ ビルドにあります。
Microsoft.Contracts.dll
VS10 から .NET 3.5でのコード コントラクトの使用に関する既知の問題はありますか? .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