7

我目前在ASP.NET MVC應用程序中使用Microsoft Code Contracts,但沒有任何問題,但似乎無法使其在基本ASP.NET網站中運行。我不完全確定它是用這種類型的項目來工作的(儘管它不應該),所以我想把它提供給每個人。Microsoft代碼合同能否與ASP.NET網站一起使用?

我可以編譯契約,但代碼會跳過它們,因爲我假設它沒有像其他項目類型(即ASP.NET MVC)那樣通過屬性頁啓用。我在我的ASP.NET網站上進入了項目的屬性頁面(顯示一個對話框而不是典型的屬性頁面),但它不會產生相同的菜單選項,因此沒有專門的部分代碼合同。

此外,我在一個類庫項目中正確啓用了微軟代碼合同,該項目用於將我的業務邏輯從網站中分離出來。合同可以很好地編譯,但是當違反合同時,它會拋出一個沒有內部異常的錯誤信息"Exception of type 'System.ExecutionEngineException' was thrown"錯誤。我的合同指定了違規時顯示的消息,但它並不在例外之內。它只是暫停執行該進程(我相信這是Microsoft代碼合同的默認功能)。

我找不到任何明確指出特定項目類型可以或不可以(或不應該)與合同一起使用的地方,所以我只想看看是否有人有此問題。

感謝您的幫助!

+0

有同樣的問題,你有沒有達到它的底部? – Kieron 2011-09-01 13:24:33

回答

0

這聽起來不像一個合同,更像是一個構建/配置問題。您是否嘗試過部署預建網站?你確定你的網站代碼可以看到合同代碼嗎?是使用CLR 4.0的ASP.NET運行時,還是它看到早期的Microsoft.Contracts.dll?等

1

我有同樣的問題,這是我如何解決它:

在引用的類庫,右鍵 - >屬性 - >代碼合同。 確保選中「執行合同檢查」。我有我的設置爲「全」 合同參考大會:確保它被設置爲「生成」

保存您的更改。

在其代碼中沒有合同的參考類庫中,將合同參考彙編設置爲「不生成」。

然後在MVC項目中,檢查代碼合同「執行合同檢查」。我有我的設置爲「完整」。

希望能幫助別人。

相關問題