2012-04-15 55 views
2

我們有一個使用.NET 4上的C#編譯的解決方案。我們希望能夠使用Crystal Reports 13,但遇到一個主要問題。水晶報表代碼合同衝突

當我們試圖使用水晶報表,會出現以下異常:

大會參考沒有解決:BusinessObjects.Licensing.KeycodeDecoder,版本= 13.0.2000.0,文化=中性公鑰= 692fbea5521e1304。

當Code Contracts運行時檢查被禁用(未選中)時,不會發生此異常;但代碼合同抱怨必須啓用重寫器。不幸的是,代碼庫中充斥着Contract.Requires<TException>(bool)調用,這將是一個噩夢,改變爲if-then-throws風格。

有沒有其他人遇到過這種不兼容性?如果是這樣,他們是如何克服它的?

感謝

回答

0

您是否嘗試過增加額外的庫路徑指向包含丟失的dll你的機器上的目錄中ContractProperties?重寫器有時會比C#編譯器追逐更多的引用,導致此問題出現。

+1

不幸的是我不相信有問題的dll實際上包含在他們的運行時或SDK中。看起來他們從其中一個其他dll中引用了它,但實際上並未部署它。 – Lukazoid 2013-04-24 20:46:58

+0

我們也停止使用水晶報告,因此較新版本的圖書館可能已經解決了這個問題。 – Lukazoid 2013-04-24 20:48:05

+0

我明白了,那真是無賴。作爲最後的手段,您還可以將選項-ignoreMetadataErrors添加到重寫器選項。如果缺少的程序集確實是一個良性的錯誤,這應該讓你通過重寫器。 – 2013-04-24 21:38:50