6

我们有一个使用Visual Studio 2010用.NET 3.5编写的 WPF 应用程序。该解决方案由 8 个项目组成 - 全部在.NET 3.5中编译。该应用程序使用 Crystal Report。目标操作系统是 Windows 7。

最近,由于某些 3rd 方 DLL 依赖项,启动项目在.NET 4.0中编译- 这些 DLL 需要 .NET 4.0。在此更改并重建解决方案后,Crystal Report 抛出异常。

问题出现在ReportClass.

异常消息:

'CrystalDecisions.CrystalReports.Engine.ReportDocument' 的类型初始化程序引发了异常。

InnerException 的消息:

“由于以下错误,检索具有 CLSID {4DB2E2BB-78E6-4AEA-BEFB-FDAAB610FD1B} 的组件的 COM 类工厂失败:80040154 类未注册(来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG))。”

我以前没有在 Crystal Report 工作过。这个问题的原因可能是什么?

请注意,编译为 .NET 3.5 时不会出现此问题。水晶报表用于启动项目。

4

5 回答 5

14

很可能是 X86/x64 的问题。

尝试将您的应用程序编译为面向 86 平台。

于 2013-03-18T10:15:21.363 回答
3

这个问题让我呆了 2 天,而且它到处都有非常相似的答案,但它最终对我来说是双重的。我在这里添加,希望它至少可以节省一天的时间。

很多帖子都提到了这一点;转到 IIS -> 应用程序池 -> 单击应用程序池上的右键 -> 转到高级设置 -> 启用 32 位应用程序 = True

请注意,就我而言,我是在 64 位机器上构建和部署的,所以我将True设置为False并且它做到了。同样,很简单,但我认为与此无关,所以在我进行调整后,我的大脑一片空白。

另一个兴趣点是确保您确实在部署服务器上加载了 CRRuntime_xx.xxMSI。

感谢大家在一天结束时提供的惊人信息,它让我度过了难关。

于 2018-01-10T21:28:02.537 回答
2

转到 IIS -> 应用程序池 -> 单击应用程序池上的右键 -> 转到高级设置 -> 启用 32 位应用程序 = True

于 2017-01-29T09:42:27.230 回答
0

当您安装 CR 时,它应该在 C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13 上安装几个文件(JS、html 等)。检查您的电脑上是否存在此文件夹。如果没有,我认为您需要将文件夹从程序文件复制到此位置。

于 2012-08-30T11:57:58.060 回答
0

这些答案让我们找到了正确的地方,但直到我们进行了一些故障排除。它最终在我们运行 Visual Studio 2019 和 IIS Express的本地开发机器上成为 32/64 位问题。

在我们的案例中,问题是“为网站和项目使用 64 位版本的 IIS Express”的设置已在 Visual Studio 设置中启用。我们在开发机器上使用 32 位版本的水晶,因此我们必须取消选中此框才能使其正常工作。

在此处输入图像描述

于 2021-08-06T15:00:01.507 回答