64位计算机

时间:2017-06-01 07:17:16

标签: c# crystal-reports 64-bit desktop-application .net-4.6.2

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

  1. Windows 10 64位
  2. 已安装的Crystal Reports 尝试安装13.0.20(最新)并重新启动PC但无效。
  3. Application Target Framework 4.6.2(我甚至尝试过4.0但是同样的错误)
  4. 使用Visual Studio 2017社区(尝试过VS 2015)
  5. 平台x64(非AnyCPU)
  6. 通过传递DataTable生成报告,没有活动 报告中的连接或ConnectionString
  7. 错误消息
  8. enter image description here

    编辑#1

    1. Web.config包含useLegacyV2RuntimeActivationPolicy="true"
    2. x86和x64中的DataTables相同enter image description here
    3. 编辑#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 \组件\ GAC_64 \ CrystalDecisions.Web \ v4.0_13.0.2000.0__692fbea5521e1304 \ CrystalDecisions.Web.dll   C:\ Windows \ Microsoft.Net \组件\ GAC_MSIL \ CrystalDecisions.Web \ v4.0_13.0.2000.0__692fbea5521e1304 \ CrystalDecisions.Web.dll   C:\ Windows \ Microsoft.Net \组件\ GAC \ CrystalDecisions.Web \ v4.0_13.0.2000.0__692fbea5521e1304 \ CrystalDecisions.Web.dll   C:\ Windows \组件\ GAC_64 \ CrystalDecisions.Web \ 13.0.2000.0__692fbea5521e1304 \ CrystalDecisions.Web.dll

      全部失败并显示PATH NOT FOUND结果。它成功了

        

      C:\的Windows \组件\ GAC_MSIL \ CrystalDecisions.Web \ 13.0.2000.0__692fbea5521e1304 \ CrystalDecisions.Web.dll

      然后在同一个文件中出现两个BUFFER OVERFLOW

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

      它表示什么?

5 个答案:

答案 0 :(得分:2)

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

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

<startup useLegacyV2RuntimeActivationPolicy="true"></startup>

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

<startup useLegacyV2RuntimeActivationPolicy="true">
 <supportedRuntime version="v4.0"/>
</startup>

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

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

中使用以下设置
<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>

答案 3 :(得分:0)

我不知道这对你有用。但是当我遇到服务器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&amp; 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&amp; icon)

.. \ 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

答案 4 :(得分:0)

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