2

コードベースでは Microsoft のコード コントラクトを使用しています。

プロジェクトにはContract.Requiresステートメントが含まれていましたが、リリースされたビルド構成では「ランタイム コントラクト チェックを実行する」チェックボックスがチェックされていませんでした。

Contract.Requiresリリース ビルドがステートメントにヒットすると、例外が生成されます。System.ServiceModel.CommunicationExceptionこれは最終的に少しずつ増え、コード コントラクトを使用する Web サービスで を引き起こします。

例外**のどこにも、これがコード コントラクトの問題であるという兆候はありませんでした。

それがコード契約の問題であるという事実を明らかにする方法はありますか?

この問題は、リリース ビルド構成の [Perform Runtime Contract Checking] チェックボックスをオンにすることで解決されましたが、実行時に利用できる診断情報が改善されるとよいでしょう。

ここに画像の説明を入力

** 内部例外を掘り下げる作業を続けています。

4

1 に答える 1

4

実行時チェックが不要な場合でも、リライターは常に必要です。そのオプションの名前は誤解を招くものです! 実行時チェックをオフにする場合は、そのチェックボックスを有効にする必要がありますが、ドロップダウンを「なし」に設定します。

リライターを有効にしていない場合、コードは Contracts クラスの実際のメソッドを呼び出すだけです。これは、リライターがアクセスするダミー メソッドにすぎません。実際にそれらを呼び出すと、例外がスローされます。

于 2012-07-08T20:59:11.860 に答える