我的报告在32位机器上工作正常但不会在64位上打开。需要64位,因为在其中一个屏幕上加载数据会导致内存问题 - 因此无法在32位上运行。
编辑#1
useLegacyV2RuntimeActivationPolicy="true"
编辑#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
相关的操作。
它表示什么?
答案 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运行时。