对于64位计算机,Crystal Report无法打开

我的报告在32位机器上工作正常但不会在64位上打开。 需要64位,因为在其中一个屏幕上加载数据会导致内存问题 – 因此无法在32位上运行。

  1. Windows 10 64位
  2. 已安装的Crystal Reports 尝试安装13.0.20(最新)并重新启动PC但没有工作。
  3. 应用程序目标框架4.6.2(我甚至尝试过4.0但同样的错误)
  4. 使用Visual Studio 2017社区(尝试VS 2015)
  5. 平台x64(不是AnyCPU)
  6. 通过传递DataTable生成报告,报告中没有活动连接或ConnectionString
  7. 错误信息

在此处输入图像描述

编辑#1

  1. Web.config包含useLegacyV2RuntimeActivationPolicy="true"
  2. x86和x64中的DataTable是相同的 在此处输入图像描述

编辑#2

显示报告的源代码是

 CrystalDecisions.CrystalReports.Engine.ReportClass c = new CrystalDecisions.CrystalReports.Engine.ReportClass(); c.FileName = System.IO.Path.Combine(Root_Path, "Reports", "Prod", mFileName); c.Load(); c.SetDataSource(dt); // dt => DataTable c.SetParameterValue("prmSystemDate", Current_Date); frmReportViewer v = new frmReportViewer(); v.ReportClass = c; v.Show(); 

而frmReportViewer FormLoad是

 private void frmReportViewer_Load(object sender, EventArgs e) { CRViewer.ReportSource = ReportClass; //CRViewer => //CrystalDecisions.Windows.Forms.CrystalReportViewer } 

我某处出错了吗?

编辑#3

x86和x64上的DataTable是相同的。 (将数据表保存在xml中,两个文件完全相同)。

Process Monitor显示我的程序对以下文件执行CreateFile操作

C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_64 \ CrystalDecisions.Web \ v4.0_13.0.2000.0__692fbea5521e1304 \ CrystalDecisions.Web.dll C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ CrystalDecisions.Web \ v4.0_13 .0.2000.0__692fbea5521e1304 \ CrystalDecisions.Web.dll C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC \ CrystalDecisions.Web \ v4.0_13.0.2000.0__692fbea5521e1304 \ CrystalDecisions.Web.dll C:\ WINDOWS \ assembly \ GAC_64 \ CrystalDecisions名.web \ 13.0.2000.0__692fbea5521e1304 \ CrystalDecisions.Web.dll

所有失败的PATH NOT FOUND结果。 它取得了成功

C:\ WINDOWS \assembly\ GAC_MSIL \ CrystalDecisions.Web \ 13.0.2000.0__692fbea5521e1304 \ CrystalDecisions.Web.dll

然后在同一个文件上发生两次BUFFER OVERFLOW

它只发生在x64上。 在x86上没有与CrystalDecisions.Web.dll相关的操作。

它表明了什么?

这可能不是一个完整的“答案”,因为你仍然在进行故障排除,并寻求帮助,但它的评论太长了。 值得注意的是,此时SAP并不支持VS 2017,并且有可能与此有关,但我甚至在VS 2010中看到了类似的消息,所以这里……

简短的猜测将此添加到您的app.config文件中:

  

或更具体地针对.NET,如:

    

更长的故障排除思维过程。 错误消息通常表示DataSet(在这种情况下为DataTable)在报表对象中使用时未设置。 你可以在那里放一个断点,看看是否为真(使用了SetDataSource)。

这可能是我在这里错了,即使在那一点上也有一个正确设置的DataSet,并且问题在观察者中稍后发生。 很久以前我遇到过像这样的问题,如果内存服务这就是我采取的追踪解决方案的途径。

基本上我的问题是EXE在查看器中使用ADO对象的方式。 在不了解项目的所有内容的情况下,我将从这条路径开始调试。

其他问题是它在VS 2015中有效吗? 它是否曾在X64中运行并停止工作? 它是否适用于其他操作,例如,您是否可以以编程方式访问报表对象,并且它只会在查看器中出错?

即使您的计算机是64位,也要安装32位版本的Crystal Reports。

我的机器也是64,但我使用32位版本的软件,它工作正常。

确保安装了最新的SP。 我目前正在使用SP19,这给了我一点麻烦。
我知道找到正确的下载链接可能会很痛苦,这可能会帮到你: https : //wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+工作室+下载

因为我创建了一个使用CrystalReports提供的查看器的WPF应用程序,所以我还必须在App.config使用以下设置

    

我不知道这对你有用。 但是当我遇到服务器2012问题时,我遇到了以下解决方案。

Framework 4.6使Crystal Reports for Visual Studio创建一个唯一的文件夹路径,指向IIS和IISExpress DEV中的Crystalreportsviewer13文件夹。

环境

 Crystal Reports for Visual Studio Windows 7 Windows 8.x Windows 2012 Server Windows 2016 Windows 10 

再现问题

我们意识到了这个问题。 实际上它与.Net Framework 4.6有关,不仅限于Win10或Windows Server 2016预览版(这些操作系统默认安装.Net 4.6)。 如果在Win7上安装.Net 4.6,则会出现同样的问题。 根本原因是MS通过Windows更新提供.Net Framework 4.6的更新,然后小版本的.Net 4.6将会改变。 对于ASP.NET网站目标到.Net 4.6应用程序池,CR查看器将尝试从.. \ aspnet_client \ system_web \ 4_6_xx \ crystalreportviewers13找到查看器资源文件(js&icon)\高亮xx是小版本的。 Net Framework 4.6。 在Win10 RTM上,它是4_6_79; 在Win7 + .Net 4.6上它是4_6_81,如果用户安装了最近的KB3098786,它将是4_6_118 …如果.Net Framework 4.6的下一个KB更新版本号将再次更改。 所以请为它创建一个BOSAP案例。 至少在SP16中,我们需要添加更多符号链接以支持.Net Framework 4.6的不同小版本。 更好的解决方案是更改加载的查看器资源文件的路径,例如,指向IIS下的虚拟文件夹。 这需要在Viewer方面修复并需要更多时间,我们将尝试在SP16中实现它…谢谢,Soda

解析度

我们的开发人员了解此问题,我们应该能够在Service Pack 16中提供修复程序

该问题与.Net Framework 4.6有关。

根本原因是MS通过Windows Update提供对.Net Framework 4.6的更新

ASP.NET网站将以.Net 4.6应用程序池为目标,CR查看器将尝试从中查找查看器资源文件(js和图标)

.. \ aspnet_client \ system_web \ 4_6_xx \ crystalreportviewers13 \

xx是.Net Framework 4.6的小版本。

 For example on Win10 RTM, it is 4_6_79; on Win7+.Net 4.6 it is 4_6_81, if user installed recent KB3098786 it will be 4_6_118x. 

安装.Net Framework 4.6的下一个KB更新时,版本号将再次更改。

目前的解决方法是更新Web.Config文件以包含Framework的更新版本

然后将\ CrystalReportsViewer13文件夹复制到新路径中:

.. \ aspnet_client \ system_web \ 4_6_xx \ crystalreportviewers13 \

有关更新和最新下载,请访问以下链接:

http://scn.sap.com/docs/DOC-7824

主页是:

http://scn.sap.com/community/crystal-reports-for-visual-studio

您在Crystal Report DataSource中是否有32位数据源或连接(例如odbc \ dao)? 你已经安装了32位和64位CR运行时,为什么你为visual studio安装了CR版本,这也很奇怪? 我遇到了类似的问题,但在用DataSet替换了32位MDB和DAO之后,一切都变好了。 我安装了32位和64位CR运行时。