2012-09-11 95 views
1

我有一個Visual Studio解決方案,其中包含分別使用ContractClass和ContractClassFor裝飾的接口和合同。Visual Studio 2012和代碼合同接口

該解決方案建立正確的Visual Studio 2010之下,但它不與Visual Studio 2012年建立的錯誤:

EXEC : error CC1019: Type 'Namespace.Interface' specifies the class 'Namespace.ContractClass' as its contract class

我更新的代號合約工具最新版本(1.4.50813.1),跑了「 devenv/setup「並重新啓動機器。

對此有何幫助?謝謝

+0

你能顯示你的代碼嗎? – Cybermaxs

+0

我使用簡單的Contract.Requires(argument!= null)和Contract.Assert(value!= null),無非是 – fra

+0

您是否嘗試了反編譯輸出程序集(使用例如dotPeek)並確保' ContractClassFor]'屬性實際上是在發射?我也遇到了這個問題,並且我發現'[ContractClassFor]'屬性沒有進入已編譯的.dll文件 - 導致ccrewrite.exe生成錯誤...我還沒有找到解決方案。 – MattDavey

回答

0

您是否嘗試從屬性窗口中刪除"Perform Static Contract Checking"

0

Visual Studio允許您通過Visual Studio'項目屬性'頁面更改CodeContract選項。

MSDN有一些截圖上這是一個很好的文章,以幫助你(http://msdn.microsoft.com/en-us/magazine/hh148151.aspx

有標記一個複選框「執行靜態檢查合同」這是對這些問題的常見原因。

如果這不能解決您的問題,我可以建議您將VS2012中的設置與VS2010中的設置進行比較。

+0

我從來沒有啓用它們。 我只選擇「標準合同要求」,「執行運行時合同檢查'完整'」和合同參考大會「DoNotBuild」 – fra

+0

我不是說你有。我假設VS2010和VS2012的代碼合同項目設置是相同的? –

+0

是的,我構建完全相同的文件。 與VS2010,沒有問題,但VS 2012仍然給我那些錯誤。 – fra