7

私は現在、ASP.NET MVCアプリケーションで何も問題なくMicrosoft Code Contractsを使用していますが、基本的なASP.NET Webサイトではそれを実行できないようです。私はそれがこのタイプのプロジェクトで作業するように作られていることは完全にはわかっていません(それは問題ではありません)ので、私は全員にそれを持ち出そうと思っていました。Microsoftコード契約をASP.NET Webサイトで使用することはできますか?

契約をうまくコンパイルできますが、他のプロジェクトタイプ(ASP.NET MVCなど)のように[プロパティ]ページで有効にしていないと仮定しているため、コードはスキップされます。私は、ASP.NET Webサイトに、典型的なプロパティページの代わりにダイアログを表示するプロジェクトのプロパティページに行ったことがありますが、同じメニューオプションを生成しないため、セクションを捧げませんコード契約に。

また、ビジネスロジックとWebサイトを分離するために使用するクラスライブラリプロジェクト内でMicrosoft Code Contractsを適切に有効にしました。契約はうまくコンパイルされますが、契約に違反したときには内部的な例外がなく、むしろ意味のない"Exception of type 'System.ExecutionEngineException' was thrown"エラーが発生します。私の契約は、違反時に表示するメッセージを指定していますが、例外のどこにもありません。これはプロセスの実行を停止するだけです(Microsoftコード契約のデフォルト機能だと思います)。

特定のプロジェクトタイプをコントラクトで使用することができるかどうかを明示的に記載している場所は見つかりませんでしたので、誰かがこの問題を抱えているかどうかを確認したいだけでした。

ありがとうございました!

+0

同じ問題を抱えていましたが、これまでに一番下には入りましたか? – Kieron

答えて

0

これは、契約のようには聞こえず、ビルド/設定の問題のようです。あらかじめ構築されたウェブサイトを展開しようとしましたか?あなたのウェブサイトのコードが契約コードを確認していますか? ASP.NETランタイムはCLR 4.0を使用していますか、それとも以前のMicrosoft.Contracts.dllが表示されていますか?など

1

私は同じ問題を抱えていたし、これは私がそれを解決する方法である:参照クラスライブラリで

、右クリック - >プロパティ - >コードの契約を。 「契約チェックを実行する」にチェックが入っていることを確認してください。私は鉱山が "フル"に設定されていた 契約参照アセンブリ: "ビルド"に設定されていることを確認してください

変更を保存します。

コードに契約がない参照クラスライブラリでは、契約参照アセンブリを「作成しない」に設定します。

MVCプロジェクトで、コード契約に「契約チェックを実行」を選択させます。私は鉱山が "フル"に設定されていた。

誰かを助ける希望。