37

我正在向我的客户端部署一个桌面应用程序,该应用程序使用 Crystal Reports API 来显示和打印表单。我正在使用 InstallShield 2012 构建我的安装程序。我还包含了 .NET 4.0 框架以及所有 Crystal 程序集。我有 2 个(有点相关)问题:

1) 每当我尝试在客户端机器上运行应用程序时,都会出现以下错误:

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

我不知道我在这里忘记了什么。该CrystalDecisions.CrystalReports.Enginedll 已在 GAC 中正确注册,大约 10 个其他 Crystal 程序集也是如此。

2)我在 SAP 论坛上提出了这个问题,并被告知我需要将 .NET 2.0 Framework 与 .NET 4.0 Framework 一起包含在内。我尝试在我的安装程序包中包含 .NET 2.0 可再发行组件,但安装程序没有安装它。安装程序是否看到我安装了 4.0,所以它跳过了 2.0 安装?

4

19 回答 19

20

这对我有用:

如果您在 64 位计算机上安装,请确保“构建”选项卡下的应用程序属性将“任何 CPU”作为平台目标,如果有选项,请取消选中“首选 32 位”复选框。Crystal对 32/64 位程序集非常敏感,并且做出了一些非常违反直觉的假设,这些假设非常难以解决。

于 2013-06-10T15:18:08.153 回答
16

当静态构造函数抛出异常时,它被包裹在一个TypeInitializationException. 您需要检查异常对象的InnerException属性以查看实际异常。

在暂存/生产环境(未安装 Visual Studio)中,您需要:

  1. 跟踪/记录异常及其 InnerException(递归):向事件添加事件处理程序AppDomain.UnhandledException,并将您的日志记录/跟踪代码放在那里。用于System.Diagnostics.Debug.WriteLine跟踪或记录器(log4net、ETW)。DbgView(一个 Sysinternals 工具)可用于查看 Debug.WriteLine 跟踪。
  2. 使用生产调试器(例如 WinDbg 或 NTSD)来诊断异常。
  3. 使用 Visual Studio 的远程调试来诊断异常(使您能够从自己的开发计算机调试目标计算机上的代码)。
于 2013-05-20T23:13:51.553 回答
10

我收到了类似的消息,经过多次在线搜索并提出所有建议后,没有任何帮助。最后我找到了解决方案。在我的 IIS 服务器中,在应用程序池高级选项下,有一个“启用 32 位应用程序”选项 - 从 false 更改为 true,并且在重新启动 IIS 服务器后,我的程序开始生成 pdf 文件。

于 2015-07-23T18:42:35.743 回答
8

检查平台目标的项目属性。安装相应版本的水晶报表:

To x86 > CRforVS_redist_install_32bit
To x64 > CRforVS_redist_install_64bit
于 2014-06-05T18:59:11.140 回答
7

如果您使用的是 Visual Studio,请启用构建属性“Prefer 32-bit”。见下图。

在此处输入图像描述

于 2018-04-24T08:19:27.430 回答
6

错误的内部异常说Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304'

更改启用 32 位应用程序的AppPool 设置False解决了该问题

于 2016-04-25T05:23:39.380 回答
3

一整天我在网上搜索,我自己找到了一个解决方案。同样的场景,应用程序在开发人员机器上运行良好,但部署时抛出异常“crystaldecisions.crystalreports.engine.reportdocument 抛出异常”详细信息:sys.io.filenotfoundexcep crystaldecisions.reportappserver.commlayer 版本 13.0.2000 缺失

我的 IDE:MS VS 2010 Ultimate,CR V13.0.10

解决方案:

  1. 我为我的应用程序设置了 x86,然后我为我的设置应用程序设置了 x64

  2. 先决条件:我将支持的 CR 运行时文件 CRRuntime_32bit_13_0_10.msi、CRRuntime_64bit_13_0_10.msi 放在以下目录 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\Crystal Reports for .NET Framework 4.0

  3. 将合并模块文件包含到安装项目中。这是版本不是很严重的事情,因为我使用 13.0.10 软件,13.0.16 合并模块文件 我包括的文件:CRRuntime_13_0_16.msm 该文件是在一组 msm 文件中找到的。

安装此合并模块时,将在以下目录中添加必要的 dll C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet

dll文件版本不会导致任何问题。

在您的开发人员机器中,您确认它相同。

我需要声誉积分,如果这个答案有用,请标记它有用(+1)

于 2016-02-07T13:34:20.370 回答
2

正如上面的“MA Hanin”所说,它可能是由InnerException这样的原因引起的:

"Unrecognized configuration section userSettings. (C:\Users\Pourakbar.h\AppData\Local\Accounting\Accounting.vshost.exe_Url_a4h1gnabohiu4wgiejk0d21rc2kbwr4g\1.0.0.0\user.config line 3)"

我删除了文件夹:C:\Users\Pourakbar.h\AppData\Local\Accounting\Accounting.vshost.exe_Url_a4h1gnabohiu4wgiejk0d21rc2kbwr4g从我的电脑中,这对我有用!

于 2013-10-22T15:17:50.930 回答
1

我在 32 位机器上没有收到错误,但在 64 位上,所以我将目标平台从 x86 更改为 Any CPU,它解决了这个问题。

于 2013-08-28T09:25:08.190 回答
0

The type initializer for CrystalDecisions.CrystalReports.Engine.ReportDocument 抛出异常

我将目标平台从 更改x86Any CPU并解决了问题。

于 2015-02-03T07:57:28.623 回答
0

我遇到了问题类型初始化程序..我的配置文件解决了它..

我忘了有一个像
“connectionStrings”“/connectionStrings”这样的连接元素,这可能取决于你在代码中做了什么。我的错误是因为这个连接元素我无法打开一个类。

于 2015-06-09T08:04:44.393 回答
0

项目属性 -> 编译 -> 目标 CPU -> 任何 CPU 并取消选中首选 32 位

完毕

于 2020-11-30T09:51:18.757 回答
0

我最近遇到了与 log4net 错误类似的错误:

无法加载文件或程序集“log4net,版本=1.2.10.0,文化=中性,PublicKeyToken=692fbea5521e1304”

这是在 64 位机器上,但我只安装了32bit运行时。

确保构建的目标只x86对我有用。

于 2017-03-09T13:07:17.433 回答
0

- 最准确的水晶报表版本 - 电脑上应该有的水晶报表应用程序

1.SAP商务一号的SAP水晶报表 14.2.8.3426

2..NET Framework(64位)13.0.31.4010的SAP Crystal Reports运行时引擎|| 13.0.31.3810

3.SAP Crystal Reports,Microsoft Visual Studio 13.0.31.4010 版|| 13.0.31.3810

下载此应用程序后,所有问题都将得到解决...

于 2021-12-21T09:19:45.133 回答
0

这是因为缺乏能力...。如果您看到内部异常,您将看到此消息

"Access is denied.
Access to speech functionality requires ID_CAP_SPEECH_RECOGNITION to be defined in the manifest."

所以要摆脱这个异常。从 Manifest 文件打开语音识别功能。

我有同样的问题,它解决了我的问题。:)

于 2016-10-18T13:26:42.113 回答
0

What did the trick for me was to change the target machine from “ANY CPU” to “x64” or maybe in your case “x86” depending in your target machine’s architecture. I would try this first before moving into a more complex solution which indicates a more complex problem.

于 2018-01-29T23:45:26.617 回答
0
  1. 下载 cr redist 2005 或 2008(这是您的工具)或从 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\CrystalReports 复制

  2. 下载 c++ redist 2005 或 2008(这是你的工具)

  3. 安装两者并重新启动系统

  4. 问题解决了。

于 2016-07-22T14:01:48.110 回答
0

我有同样的问题,我解决了它安装了水晶报告运行时 32 和 64 位两个版本

于 2020-10-28T21:20:01.363 回答
-1

我遇到了同样的问题。就我而言,目标平台是任何 CPU。但是选中了“Prefer-32Bit”复选框。取消选中同样解决了这个问题。

于 2016-01-06T10:56:08.647 回答