Warm tip: This article is reproduced from serverfault.com, please click

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

(c# - The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception)

发布于 2013-05-20 20:57:33

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

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

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

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

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

Questioner
gwin003
Viewed
0
M.A. Hanin 2013-05-21 07:13:51

当静态构造函数引发异常时,它将包装在中TypeInitializationException你需要检查异常对象的InnerException属性以查看实际的异常。

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

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