我正在向使用Crystal Reports API显示和打印表单的客户端部署桌面应用程序。我正在使用InstallShield 2012构建我的安装程序。我还包括.NET 4.0 Framework以及所有Crystal程序集。我有2个(有点相关)问题:
1)每当我尝试在客户端计算机上运行应用程序时,都会出现以下错误:
The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument'
threw an exception.
我不知道我忘记了什么。正确地在GAC中注册CrystalDecisions.CrystalReports.Engine
dll,以及大约10个其他Crystal程序集。
2)I have asked this question on the SAP forums,我被告知需要将.NET 2.0 Framework与.NET 4.0 Framework一起包含在内。我尝试在我的安装程序包中包含.NET 2.0可再发行组件,但安装程序不会安装它。安装程序是否看到我安装了4.0,因此它会跳过2.0安装?
答案 0 :(得分:15)
这对我有用:
如果要在64位计算机上安装,请确保“构建”选项卡下的应用程序属性具有“任何CPU”作为平台目标,如果您有选项,请取消选中“首选32位”复选框。 Crystal对于32/64位程序集非常敏感,并且做了一些非常违反直觉的假设,这些假设很难排除故障。
答案 1 :(得分:11)
当静态构造函数抛出异常时,它将被包装在TypeInitializationException
内。您需要检查异常对象的InnerException
属性以查看实际异常。
在暂存/生产环境中(没有安装Visual Studio),您需要:
AppDomain.UnhandledException
事件添加事件处理程序,并将记录/跟踪代码放在那里。使用System.Diagnostics.Debug.WriteLine
进行跟踪,或使用记录器(log4net,ETW)。 DbgView(一个Sysinternals工具)可用于查看Debug.WriteLine跟踪。答案 2 :(得分:7)
我有类似的信息,经过几次在线搜索并做了所有建议后,没有任何帮助。最后我找到了解决方案。在我的IIS服务器中,在“应用程序池高级”选项下,有一个“启用32位应用程序”选项 - 从false更改为true,重新启动IIS服务器后,我的程序开始生成pdf文件。
答案 3 :(得分:5)
检查项目的属性是否为平台目标。安装相应版本的Crystal Reports:
To x86 > CRforVS_redist_install_32bit
To x64 > CRforVS_redist_install_64bit
答案 4 :(得分:3)
bug的内部异常是无法加载文件或程序集'log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304'
更改启用32位应用的AppPool设置错误解决了问题
答案 5 :(得分:2)
我在网上搜索了一整天,我自己找到了一个解决方案。 同样的情况,应用程序在开发人员计算机中运行良好,但在部署时它会抛出异常 “crystaldecisions.crystalreports.engine.reportdocument引发异常” 详细信息:缺少sys.io.filenotfoundexcep crystaldecisions.reportappserver.commlayer版本13.0.2000
我的IDE:MS VS 2010 Ultimate,CR V13.0.10
解决方案:
我为我的应用程序设置了x86,然后我为我的设置应用程序设置了x64
先决条件:我在以下目录中放置了支持CR运行时文件CRRuntime_32bit_13_0_10.msi,CRRuntime_64bit_13_0_10.msi C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper \ Packages \ .NET Framework 4.0的Crystal Reports
将合并模块文件包含到安装项目中。这里的版本并不严肃,因为我使用13.0.10软件,13.0.16合并模块文件 我包含的文件:CRRuntime_13_0_16.msm 此文件位于已设置的msm文件中。
安装此Merge模块时,将在以下目录中添加必要的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)
答案 6 :(得分:1)
正如“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_a4h1gnabohiu4wgiejk0d21rc2kbwr4g
,这对我有用!
答案 7 :(得分:1)
我最近遇到了类似的错误:log4net错误:
无法加载文件或程序集'log4net,Version = 1.2.10.0, Culture = neutral,PublicKeyToken = 692fbea5521e1304'
这是在64位机器上,但我只安装了32bit
运行时。
确保构建仅针对x86
定位。
答案 8 :(得分:0)
我遇到了问题类型初始化程序..我的配置文件解决了它..
我忘记了这样的连接元素 “的ConnectionStrings” “/的ConnectionStrings” 也许这取决于你在代码中做了什么。我的错误是因为这个连接元素而无法打开一个类。
答案 9 :(得分:0)
The type initializer for CrystalDecisions.CrystalReports.Engine.ReportDocument
抛出异常。
我将目标平台从x86
更改为Any CPU
并解决了问题。
答案 10 :(得分:0)
我没有在32位计算机上收到错误但是在64位计算机上,所以我将目标平台从x86更改为任意CPU,它解决了问题。
答案 11 :(得分:0)
下载cr redist 2005或2008(这是您的工具)或从C:\ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages \ CrystalReports
下载c ++ redist 2005或2008(这是您的工具)
安装并重新启动系统
问题解决了。
答案 12 :(得分:0)
这是因为缺乏能力......如果你看到内部异常,你会看到这条消息
"Access is denied.
Access to speech functionality requires ID_CAP_SPEECH_RECOGNITION to be defined in the manifest."
所以摆脱这个例外。从Manifest文件中打开语音识别功能。
我有同样的问题,它解决了我的问题。 :)
答案 13 :(得分:0)
对我来说,诀窍是将目标机器从“任何CPU”更改为“x64”,或者在您的情况下“x86”,具体取决于您的目标机器的架构。在进入一个表明更复杂问题的更复杂的解决方案之前,我会首先尝试这个。
答案 14 :(得分:0)
答案 15 :(得分:0)
我遇到了同样的问题,并且安装了Crystal Report Runtime 32和64位版本,都解决了该问题
答案 16 :(得分:0)
项目属性->编译->目标CPU->任何CPU 然后取消选中“首选32位”
完成
答案 17 :(得分:-2)
我遇到了同样的问题。在我的情况下,目标平台是Any CPU。但是复选框" Prefer-32Bit"被检查..取消选中同样解决了问题。