Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# '的类型初始值设定项;CrystalDecisions.CrystalReports.Engine.ReportDocument';抛出异常_C#_.net_Deployment_Installshield_Crystal Reports 2010 - Fatal编程技术网

C# '的类型初始值设定项;CrystalDecisions.CrystalReports.Engine.ReportDocument';抛出异常

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

我正在为我的客户端部署一个桌面应用程序,它使用Crystal Reports API来显示和打印表单。我正在使用InstallShield 2012构建安装程序。我还包括了.NET4.0框架以及所有Crystal组件。我有两个(有点相关的)顾虑:

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

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跟踪
  • 使用生产调试器(如WinDbg或NTSD)诊断异常
  • 使用Visual Studio的远程调试来诊断异常(使您能够从自己的开发计算机调试目标计算机上的代码)

  • 以下是对我有效的方法:


    如果要在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

    解决方案:

  • 我为应用程序设置x86,然后为安装应用程序设置x64

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

  • 将合并模块文件包括到安装项目中。这里是版本不是严重的事情,因为我使用13.0.10软,13.0.16合并模块文件 包括的文件:CRRuntime_13_0_16.msm 此文件在设置的msm文件中找到

  • 安装此合并模块时,将在以下目录中添加必要的dll C:\程序文件(x86)\SAP业务对象\水晶报表.NETFramework 4 \Cudio\SAP业务对象企业席4 \Wi32×x86 \DOTNET < /P> dll文件版本不会导致任何问题

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


    我需要信誉点,如果这个答案有用,请将其标记为有用(+1)

    错误的内部异常表示无法加载文件或程序集'log4net,Version=1.2.10.0,Culture=neutral,PublicKeyToken=692fbea5521e1304'

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

  • 下载cr redist 2005或2008(这是您的工具)或从C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\CrystalReports复制

  • < P>下载C++ ReDIST 2005或2008(这是你的工具)

  • 安装并重新启动系统

  • 专业的
    "Access is denied.
    Access to speech functionality requires ID_CAP_SPEECH_RECOGNITION to be defined in the manifest."