2012-08-30 162 views
3

我們有一個WPF應用程序,編寫於.NET 3.5使用Visual Studio 2010。該解決方案由8個項目組成 - 全部編譯於.NET 3.5。該應用程序使用Crystal Report。目標操作系統是Windows 7.NET Framework 4.0中的Crystal Report

近日,啓動項目.NET 4.0編譯由於一些第三方DLL的依賴 - 這些DLL需要.NET 4.0。在此更改並重建解決方案之後,Crystal Report引發異常。

問題發生在構造函數ReportClass

異常的消息:

The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception.

的InnerException的消息:

"Retrieving the COM class factory for component with CLSID {4DB2E2BB-78E6-4AEA-BEFB-FDAAB610FD1B} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))."

我沒有在水晶報表工作過。造成這個問題的原因是什麼?

請注意,編譯爲.NET 3.5時不會發生此問題。 Crystal Report用於啓動項目。

+0

您是否需要將Crystal Reports DLL註冊爲COM對象? – zeencat

+0

我認爲你需要使用.net 4.0構建所有的項目,不知道爲什麼現在。 – lex87

+0

@ zeencat:不知道你是什麼意思。我沒有在3.5中註冊DLL。 – Donotalo

回答

9

這很可能是X86/x64的問題。

嘗試將您的應用編譯爲目標86平臺。

0

當你安裝CR時,它應該在C:\ inetpub \ wwwroot \ aspnet_client \ system_web \ 4_0_30319 \ crystalreportviewers13上安裝幾個文件(JS,html等)。檢查您的電腦上是否存在此文件夾。如果沒有,我認爲你需要將文件夾從程序文件複製到這個位置。

+0

此文件夾存在。 – Donotalo

0

進入IIS - >應用程序池 - >點擊您的應用程序池,右鍵 - >轉到高級設置 - >啓用32位應用程序=真

1

這個問題讓我2天,其遍佈這個地方的答案非常相似,但是它最終成爲了我的兩倍。我在這裏加入希望至少可以節省一天的人..

很多帖子都提到了這個; 轉到IIS - >應用程序池 - >點擊您的應用程序池,右鍵 - >轉到高級設置 - >啓用32位應用程序=

請注意,在我的情況我是建設並在部署64位機器,所以我設置它做到了。再次,簡單,但不是我認爲是相關的,所以在我做了調整後,我的腦子裏一片空白。

另一個關注點是確保您在部署服務器上加載了CRRuntime_xx.x.x.MSI。

謝謝大家在這裏結束了一天的驚人的信息,讓我度過了。

+2

雖然經驗不錯,但我認爲你不應該把你的答案變成一封感謝信。讓它更加註重點。 – Gnqz