1

我有一个 .net 2.0 应用程序,它使用 Crystal Reports XI R2(11.5.3700.0) 进行报告。它在 Windows XP 下运行良好,但在 Windows 7 上表现出奇怪的行为。

在 Windows 7 中,当在调试模式 (F5) 下运行时,一切看起来都很好,但是如果我们直接启动 EXE (No debug; CTRL+F5)m 它无法显示报告。

我可以从堆栈跟踪中看到以下信息,但我在这里完全一无所知。

at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
   at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)
   at CrystalDecisions.CrystalReports.Engine.ReportClass.Load(String reportName, OpenReportMethod openMethod, Int16 parentJob)
   at CrystalDecisions.CrystalReports.Engine.ReportDocument.EnsureLoadReport()
   at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val, Type type)
   at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(DataSet dataSet)

有人遇到过这个问题并康复了吗?善意的帮助总是值得赞赏的。

编辑:此应用程序在单个 UI 线程上运行。它是一个 Winforms 应用程序。

4

2 回答 2

1

此问题是由于 Windows 7 中的数据执行保护安全功能造成的。有两种方法可以解决此问题。

  1. 将以下行添加到您的构建后脚本并忘记此问题
调用“$(DevEnvDir)\..\..\VC\bin\vcvars32.bat”
调用 "$(DevEnvDir)\..\..\VC\bin\editbin.exe" /NXCOMPAT:NO "$(TargetPath)"
  1. 完全禁用 DEP(不推荐。它会打开安全漏洞),一切正常。
  2. 安装 Crystal Reports XI R2 Service Pack 6 运行时。此运行时与 Windows 7 兼容(根据他们的发行说明。我尚未对此进行测试)。
于 2011-07-06T05:23:52.733 回答
0

如果您将报告文件夹用于水晶报告,我将面临同样的问题,那么从调试文件夹复制您的报告文件夹并将其粘贴到 bin 文件夹中的发布文件夹中并在发布模式下运行您的项目很简单。谢谢

于 2020-11-03T17:34:28.963 回答