【问题标题】:Crystal Report in .NET Framework 4.0.NET Framework 4.0 中的水晶报表
【发布时间】:2012-08-25 02:15:43
【问题描述】:

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

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

问题出现在ReportClass的构造函数上。

异常消息:

类型初始化器 'CrystalDecisions.CrystalReports.Engine.ReportDocument' 抛出了一个 例外。

InnerException 的消息:

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

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

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

【问题讨论】:

  • 是否需要将 Crystal Reports DLL 注册为 COM 对象?
  • 我认为您需要使用 .net 4.0 构建所有项目,现在不知道具体原因。
  • @zeencat:不知道你是什么意思。我没有在 3.5 中注册 DLL。
  • 我只是想知道这是否是您的问题,因为我在使用不同的 dll 时遇到了类似的错误。这对我有用,可能是在黑暗中的一个完整的镜头。 msdn.microsoft.com/en-us/library/tzat5yw6(v=vs.71).aspx
  • 我在 [这里][1] 找到了解决方案。这解决了我的问题。 [1]:stackoverflow.com/a/2892577/68304

标签: c# crystal-reports crystal-reports-2010


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    很可能是X86/x64的问题。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

        另一点是确保您确实在部署服务器上加载了 CRRuntime_xx.x.x.MSI。

        感谢大家在一天结束时提供的令人惊叹的信息。

        【讨论】:

        • 虽然appriciation很好,但我认为你不应该把你的答案变成appriciation letter。保持重点。
        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-31
          • 1970-01-01
          • 2010-09-06
          • 1970-01-01
          • 2010-10-08
          相关资源
          最近更新 更多