C# '的类型初始值设定项;CrystalDecisions.CrystalReports.Engine.ReportDocument';抛出异常
我正在为我的客户端部署一个桌面应用程序,它使用Crystal Reports API来显示和打印表单。我正在使用InstallShield 2012构建安装程序。我还包括了.NET4.0框架以及所有Crystal组件。我有两个(有点相关的)顾虑: 1) 每当我尝试在客户端计算机上运行应用程序时,都会出现以下错误:C# '的类型初始值设定项;CrystalDecisions.CrystalReports.Engine.ReportDocument';抛出异常,c#,.net,deployment,installshield,crystal-reports-2010,C#,.net,Deployment,Installshield,Crystal Reports 2010,我正在为我的客户端部署一个桌面应用程序,它使用Crystal Reports API来显示和打印表单。我正在使用InstallShield 2012构建安装程序。我还包括了.NET4.0框架以及所有Crystal组件。我有两个(有点相关的)顾虑: 1) 每当我尝试在客户端计算机上运行应用程序时,都会出现以下错误: The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' thre
The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument'
threw an exception.
我不知道我在这里忘记了什么。CrystalDecisions.CrystalReports.Engine
dll正在GAC中正确注册,大约还有10个其他Crystal程序集
2) ,我被告知需要将.NET2.0框架与.NET4.0框架一起包括在内。我尝试在我的安装程序包中包含.NET2.0可再发行版本,但安装程序没有安装它。安装程序是否看到我安装了4.0,因此它跳过了2.0安装?当静态构造函数抛出异常时,它被包装在
TypeInitializationException
中。您需要检查异常对象的InnerException
属性以查看实际异常
在登台/生产环境(未安装Visual Studio)中,您需要:
AppDomain.UnhandledException
事件中,并将记录/跟踪代码放在那里。使用System.Diagnostics.Debug.WriteLine
进行跟踪,或使用记录器(log4net、ETW)。DbgView(系统内部工具)可用于查看Debug.WriteLine跟踪以下是对我有效的方法:
如果要在64位计算机上安装,请确保Build选项卡下的应用程序属性将“Any CPU”作为平台目标,如果有此选项,请取消选中“prefere 32-bit”复选框。Crystal对32/64位程序集非常敏感,并且做出了一些非常违反直觉的假设,这些假设很难排除故障。我在32位机器上没有发现错误,但在64位机器上,所以我将目标平台从x86更改为任何CPU,并解决了问题。正如上面的“M.A.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\u a4h1gnabohiu4wgiejk0d21rc2kbwr4g
,这对我很有效 检查平台目标项目的属性。安装相应版本的Crystal Reports:
To x86 > CRforVS_redist_install_32bit
To x64 > CRforVS_redist_install_64bit
CrystalDecisions.CrystalReports.Engine.ReportDocument的类型初始值设定项
引发了异常
我将目标平台从
x86
更改为Any CPU
,解决了问题。我在类型初始值设定项上遇到了问题。。我的配置文件解决了这个问题
我忘了有这样的连接元素“连接字符串” “/ConnectionString”
也许这取决于你在代码中做了什么。我的错误是,由于这个连接元素,我无法打开一个类。我收到了类似的消息,在网上进行了几次搜索并给出了所有建议后,没有任何帮助。最后我找到了解决办法。在我的IIS服务器中,在“应用程序池高级”选项下,有一个“启用32位应用程序”选项,该选项已从false更改为true,重新启动IIS服务器后,我的程序开始生成pdf文件。我也遇到了同样的问题。在我的例子中,目标平台是任何CPU。但选中了复选框“首选32位”。。取消选中同样的选项解决了问题。我在网上搜索了整整一天,自己找到了解决方案。 同样的场景,应用程序在开发人员机器中工作正常,但部署时会引发异常 “crystaldecisions.crystalreports.engine.reportdocument引发异常” 详细信息:缺少sys.io.filenotfoundexcep crystaldecisions.reportappserver.commlayer 13.0.2000版 我的IDE:MS VS 2010终极版,CR V13.0.10 解决方案:
我需要信誉点,如果这个答案有用,请将其标记为有用(+1)错误的内部异常表示无法加载文件或程序集'log4net,Version=1.2.10.0,Culture=neutral,PublicKeyToken=692fbea5521e1304' 更改启用32位应用程序的AppPool设置False解决了该问题
"Access is denied.
Access to speech functionality requires ID_CAP_SPEECH_RECOGNITION to be defined in the manifest."