我有一个包含Crystal Reports的应用程序。它存在无法在某些计算机上运行的问题。我有一段时间没有遇到过这个问题,所以我试着安装我记得的所有需要的东西。
首先,我创建了一个空的Crystal Report
的简单控制台应用程序,它只是实例化报告并在EXE旁边导出为PDF。就像这样,它的测试速度要快得多。我把try catch和写入文本文件的错误的堆栈跟踪,以便我可以快速调试。
把它放在我的电脑上它工作正常。将它复制到一台无法正常工作的计算机上并尝试了它,但找不到资源。所以我安装了我需要的最新Crystal Runtime,它是13_0_22 64位。
再次把它弄错了:
找不到方法: “CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag CrystalDecisions.ReportAppServer.ReportDefModel.ISCRExportOptions.get_ExportOptionsEx()'
然后我记得Crystal Report
无法在Any CPU
上运行,并且您必须指定一个平台。将我的控制台项目重新编译为x64
,现在我遇到了以下错误:
该文件尚未开启。在 CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.set_ReportAppServer(字符串 pbsVal)
现在我确定计算机有.net 3.5,.net 4.7和Microsoft Visual C ++ 2012(因为我知道这是Crystal的要求)。
我还需要安装其他任何其他东西吗?
我已经重新安装了Crystal运行时,认为它可能是它,但它仍然无效。
这是我使用的代码,以防有人不知道我的意思是简单的水晶报告代码:
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System;
using System.Data;
using System.Diagnostics;
using System.IO;
namespace ConsoleApplication1678
{
class Program
{
static void Main(string[] args)
{
try
{
var report = new CrystalReport1();
if (File.Exists("rpt.pdf"))
{
File.Delete("rpt.pdf");
}
report.ExportToDisk(ExportFormatType.PortableDocFormat, "rpt.pdf");
Process.Start("rpt.pdf");
}
catch (Exception ex)
{
var error = ex.Message + "\n\n" + ex.StackTrace;
File.WriteAllText("error.txt", error);
}
}
}
}
答案 0 :(得分:0)
直接从SAP获得我的答案。简短版本,我需要使用最新版本,并告诉所有客户给我他们使用的所有使用Crystal的软件的列表,以便我可以致电这些公司并使其升级到最新版本,因为您不能在Windows 2000上安装2个版本。同时它们都必须使用相同的位格式。
我的应用程序必须运行64位,因为我们使用了超过20 GB的ram,因此我需要致电所有其他应用程序供应商,以使其应用程序成为64位编译版本,因为安装最新版本会使他们的所有程序均失败。