'CrystalDecisions.CrystalReports.Engine.ReportDocument'的类型初始值设定项引发异常

gwi*_*003 30 .net c# deployment installshield crystal-reports-2010

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

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

The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' 
      threw an exception.
Run Code Online (Sandbox Code Playgroud)

我不知道我忘记了什么.所述CrystalDecisions.CrystalReports.EngineDLL在GAC被注册正确,因为是大约10其他Crystal组件.

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

Jer*_*acs 15

这对我有用:

如果要在64位计算机上进行安装,请确保"构建"选项卡下的应用程序属性具有"任何CPU"作为平台目标,如果有选项,请取消选中"首选32位"复选框.Crystal 对于32/64位组件非常敏感,并且做出一些非常违反直觉的假设,这些假设非常难以排除故障.

  • 我已经看到SAP文档明确指定将其设置为32或64位NOT AnyCpu. (2认同)

M.A*_*nin 13

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

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

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


小智 7

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


小智 6

错误的内部异常表示无法加载文件或程序集'log4net,版本= 1.2.10.0,文化=中性,PublicKeyToken=692fbea5521e1304'

Enable 32-bit Application更改 AppPool 设置False解决了这个问题


小智 6

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

在此处输入图片说明


小智 5

检查项目的属性是否为平台目标.安装相应版本的Crystal Reports:

To x86 > CRforVS_redist_install_32bit
To x64 > CRforVS_redist_install_64bit
Run Code Online (Sandbox Code Playgroud)

  • 你是说应该安装这个名字的应用程序?解析你写的东西很难.如果你能清理它,那就太好了. (3认同)