我有一个水晶报告的应用程序。它在某些计算机上不运行时会出现问题。我已经有一段时间没有这个问题了,所以我试着安装所有我记得我需要的。
首先,我制作了一个简单的控制台应用程序,它有一个空的
Crystal Report
它所做的只是实例化报表并导出到EXE旁边的PDF文件。这样测试要快得多。我放置了一个try-catch,并将错误的堆栈跟踪写入文本文件,以便快速调试。
在我的电脑上运行的很好。把它复制到一台无法正常工作的计算机上,然后尝试,但找不到资源。所以我安装了最新的Crystal运行时,我需要13_0_22 64位。
再次运行时出错:
找不到方法:
“CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag”
crystaldecisions.reportappserver.reportdefmodel.iscrexportoptions.get_exportoptionsex()'
然后我想起了
水晶报告
无法运行
Any CPU
你必须指定一个平台。将我的控制台项目重新编译为
x64
现在我陷入了以下错误:
文档尚未打开。在
crystaldecisions.reportappserver.clientdoc.reportclientdocumentclass.set_reportappserver(字符串
PBSVAL)
现在我确定计算机有.NET 3.5,.NET 4.7和微软Visual C++ 2012(我知道这是对水晶的要求)。
还有什么我需要安装的吗?
我已经重新安装了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);
}
}
}
}