无法在某些计算机上运行Crystal Report

2020-09-03 14:18发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个带有Crystal Reports的应用程序。 它存在无法在某些计算机上运行的问题。 我有一段时间没有这个问题了,所以我尝试安装所有我记得需要的东西。

首先,我制作了一个简单的控制台应用程序,该应用程序具有一个空的 Crystal Report ,它所做的就是实例化该报告并导出到EXE旁边的PDF。 这样,测试起来要快得多。 我试了一下然后将错误的堆栈跟踪信息写入文本文件,以便快速调试。

在我的计算机上运行它可以正常工作。 将其复制到无法正常工作的计算机上,然后尝试使用它,但找不到资源。 我尝试使用13_0_15进行开发,但无法正常工作。 所以我安装了最新的Crystal Runtime,它是13_0_22 64位。

再次运行该错误:

找不到方法:" CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag CrystalDecisions.ReportAppServer.ReportDefModel.ISCRExportOptions.get_ExportOptionsEx()"

然后,我记得 Crystal Report 不能在任何CPU 上运行,并且您必须指定一个平台。 将我的Console项目重新编译为 x64 ,现在我陷入了以下错误:

文档尚未打开。 在CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.set_ReportAppServer(String pbsVal)

现在,我确保计算机具有.net 3.5,.net 4.7和Microsoft Visual C ++ 2012(据我所知,这是Crystal的要求)。

还有其他我可能需要安装的东西吗?

我已经重新安装了Crystal运行时,以为可能是这样,但仍然无法正常工作。

这是我使用的代码,以防有人不了解简单水晶报表代码的含义:

使用CrystalDecisions.CrystalReports.Engine;
 使用CrystalDecisions.Shared;
 使用系统;
 使用System.Data;
 使用System.Diagnostics;
 使用System.IO;
 命名空间ConsoleApplication1678
 {
     班级计划
     {
         静态void Main(string [] args)
         {
             尝试
             {
                 var report = newCrystalReport1();

                 if(File.Exists(" rpt.pdf"))
                 {
                     File.Delete(" rpt.pdf");
                 }

                 report.ExportToDisk(ExportFormatType.PortableDocFormat," rpt.pdf");
                 Process.Start(" rpt.pdf");
             }
             抓住(例外)
             {
                 var错误= ex.Message +" \ n \ n" + ex.StackTrace;
                 File.WriteAllText(" error.txt",error);
             }
         }
     }
 } 

编辑:

创建了一个与上述项目非常相似的全新项目。 唯一的区别是,我向报表添加了数据源并添加了几个字段。 在我的PC上,它运行完美。 在任何非开发人员的PC上,它都无法正常工作,并且仍然出现错误:


找不到方法:" CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag CrystalDecisions.ReportAppServer.ReportDefModel.ISCRExportOptions.get_ExportOptionsEx()"

现在我已经在所有PC上安装了VC ++ Redist 2015,但仍然无法使用。 然后我注意到我在任何CPU上,我都切换到x86并尝试过,但错误仍然存​​在。 然后,我用x64重建了,它突然起作用了。 全部不工作的PC都具有Crystal Report和VC ++ Redist的x86和x64,这是为什么? Crystal Report不再可用为32位吗? 这是一个很大的问题,因为如果我的应用程序不是x86,我有4个第三方DLL无法正常工作

编辑:

这是两种模式下使用的dll的2张图片

这是32位:

这是64位:

(81.2 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个带有Crystal Reports的应用程序。 它存在无法在某些计算机上运行的问题。 我有一段时间没有这个问题了,所以我尝试安装所有我记得需要的东西。

首先,我制作了一个简单的控制台应用程序,该应用程序具有一个空的 Crystal Report ,它所做的就是实例化该报告并导出到EXE旁边的PDF。 这样,测试起来要快得多。 我试了一下然后将错误的堆栈跟踪信息写入文本文件,以便快速调试。

在我的计算机上运行它可以正常工作。 将其复制到无法正常工作的计算机上,然后尝试使用它,但找不到资源。 我尝试使用13_0_15进行开发,但无法正常工作。 所以我安装了最新的Crystal Runtime,它是13_0_22 64位。

再次运行该错误:

找不到方法:" CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag CrystalDecisions.ReportAppServer.ReportDefModel.ISCRExportOptions.get_ExportOptionsEx()"

然后,我记得 Crystal Report 不能在任何CPU 上运行,并且您必须指定一个平台。 将我的Console项目重新编译为 x64 ,现在我陷入了以下错误:

文档尚未打开。 在CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.set_ReportAppServer(String pbsVal)

现在,我确保计算机具有.net 3.5,.net 4.7和Microsoft Visual C ++ 2012(据我所知,这是Crystal的要求)。

还有其他我可能需要安装的东西吗?

我已经重新安装了Crystal运行时,以为可能是这样,但仍然无法正常工作。

这是我使用的代码,以防有人不了解简单水晶报表代码的含义:

使用CrystalDecisions.CrystalReports.Engine;
 使用CrystalDecisions.Shared;
 使用系统;
 使用System.Data;
 使用System.Diagnostics;
 使用System.IO;
 命名空间ConsoleApplication1678
 {
     班级计划
     {
         静态void Main(string [] args)
         {
             尝试
             {
                 var report = newCrystalReport1();

                 if(File.Exists(" rpt.pdf"))
                 {
                     File.Delete(" rpt.pdf");
                 }

                 report.ExportToDisk(ExportFormatType.PortableDocFormat," rpt.pdf");
                 Process.Start(" rpt.pdf");
             }
             抓住(例外)
             {
                 var错误= ex.Message +" \ n \ n" + ex.StackTrace;
                 File.WriteAllText(" error.txt",error);
             }
         }
     }
 } 

编辑:

创建了一个与上述项目非常相似的全新项目。 唯一的区别是,我向报表添加了数据源并添加了几个字段。 在我的PC上,它运行完美。 在任何非开发人员的PC上,它都无法正常工作,并且仍然出现错误:


找不到方法:" CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag CrystalDecisions.ReportAppServer.ReportDefModel.ISCRExportOptions.get_ExportOptionsEx()"

现在我已经在所有PC上安装了VC ++ Redist 2015,但仍然无法使用。 然后我注意到我在任何CPU上,我都切换到x86并尝试过,但错误仍然存​​在。 然后,我用x64重建了,它突然起作用了。 全部不工作的PC都具有Crystal Report和VC ++ Redist的x86和x64,这是为什么? Crystal Report不再可用为32位吗? 这是一个很大的问题,因为如果我的应用程序不是x86,我有4个第三方DLL无法正常工作

编辑:

这是两种模式下使用的dll的2张图片

这是32位:

这是64位:

(81.2 kB)
付费偷看设置
发送
13条回答
小灯塔
1楼 · 2020-09-03 14:53.采纳回答

使用Google搜索此KBA 2719939。

介绍如何混合SP版本。

我只安装了运行时C ++ 2015运行时,没有任何更改。 还是一样的错误:

有关调用即时(JIT)调试而不是此对话框的详细信息,请参阅此消息的末尾。 **************异常文本************** System.MissingMethodException:找不到方法:'CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag CrystalDecisions.ReportAppServer。 ReportDefModel.ISCRExportOptions.get_ExportOptionsEx()"。 在CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)在CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext)在CrystalDecisions.CrystalReports.Engine.FormatEngine.Export(ExportRequestContext reqContext)在CrystalDecisions.CrystalReport.Engine ()在CrystalDecisions.CrystalReports.Engine.ReportDocument.Export()

梦想连接
3楼-- · 2020-09-03 14:57

更新到SP 23:

https://answers.sap.com/tags/281348484285791548287640397557224

CR需要VC 2015 C ++运行时而不是2012。

哎,真难
4楼-- · 2020-09-03 15:10

我无权访问4.7。 我的Visual Studio 2015是全新安装的计算机,安装于6月。 我安装的所有内容都是使用C#进行的基本设置,仅此而已(没有Azure,没有Web开发等等),我添加了3个第三方集成工具,Telerik,AnkSVN和Visual Studio的Crystal报告。 所以我最多只能访问4.6.1。 我每天有成千上万的客户在我们的应用程序上连接,并且毫无问题地使用它。 而且我有大量的家用计算机,它们都可以使用64位,但不能使用32位,其中90%的计算机部件和Windows 10 Pro完全相同,并且Windows Windows Update相同。 您是否可以在他们的PC上运行任何实用程序,以找出缺少的内容? 我尝试在随机计算机上成功安装和重新安装Crystal运行时。 我是否可以与开发人员联系,该开发人员可以告诉我代码中的内容引发了该异常,因此我至少可以知道我需要查找的内容。 我没有源代码,或者不知道如何获取它,否则我已经检查过自己。

N-Moskvin
5楼-- · 2020-09-03 15:04

不知道。 您将不得不进行更多的调试,为什么它可以在x64模式下运行,但不能运行x86,因为您说那些依赖项需要x86。 也许依赖项需要使用4.7框架进行编译...

打个大熊猫
6楼-- · 2020-09-03 15:07

Windows 7和10均为64位

闻人可可
7楼-- · 2020-09-03 14:59

您可以使用ProcessMonitor比较运行时和第三方 依赖项,或搜索我们多年来使用的名为Modules.exe的32位应用程序

哦,该API是要在RPT文件中获取保存的导出选项,如果报表中未保存任何导出选项,则在尝试获取该选项时会抛出一个执行。

我建议您确保已在RPT中保存了PDF导出选项,或者在尝试在应用程序中获取"保存的导出选项"时直接忽略该异常。

一周热门 更多>