【问题标题】:compatibility of Crystal Report水晶报表的兼容性
【发布时间】:2012-06-01 19:53:36
【问题描述】:
vs2005的水晶报表2005和水晶报表2010不应该互相支持吗?
至少如果我的电脑中有 CR2005 并且我升级到 CR2010 它应该可以工作。我是一名开发人员,我有权安装每个版本的 CR,如果我是 CR 的用户,他们应该是应该使其兼容的人。
从 SAP 中找出一条语句:
由于每个版本的 Crystal Reports 都有自己特定的运行时
必须正确部署,部署的运行时至关重要
与 Visual Studio 的 Crystal Reports 程序集一致
.NET 在您的项目中引用。
我是错还是对?
【问题讨论】:
标签:
crystal-reports
compatibility
【解决方案1】:
Crytsal Report 报告保持不同版本的兼容性;
当您开始使用不同版本的报表时,IDE 只会建议您说“报表是使用不同版本编辑的”。
无论如何,报表可以在不同的运行时使用,你不需要修改它们。
您在上工作的解决方案(在我的例子中是一个WEB APPLICATION)应该与部署应用程序的服务器上安装的运行时相匹配。
无论如何,有一个web.config 解决方法可以使应用程序也可以在不同的运行时工作:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.CrystalReports.Engine" publicKeyToken="692fbea5521e1304" culture="neutral"/>
<bindingRedirect oldVersion="xx.x.xxxx.x" newVersion="yy.y.yyyy.y"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.Shared" publicKeyToken="692fbea5521e1304" culture="neutral"/>
<bindingRedirect oldVersion="xx.x.xxxx.x" newVersion="yy.y.yyyy.y"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.ReportSource" publicKeyToken="692fbea5521e1304" culture="neutral"/>
<bindingRedirect oldVersion="xx.x.xxxx.x" newVersion="yy.y.yyyy.y"/>
</dependentAssembly>
<dependentAssembly>
...
</assemblyBinding>
</runtime>
其中 oldVersion 是您用于开发的版本,newVersion 是安装在服务器上的版本。
【解决方案2】:
在大多数情况下,当前版本的 CR(无论是什么版本)都可以读取旧版本的文件格式。但是,如果您尝试保存它,该文件将更新为当前版本的格式。
也就是说,旧版本的 CR(我认为是 v5 和更早版本)曾经使用 Fetch() 和 Store() 在子报表及其容器之间传递信息;这些函数包含在 UFL 中。当他们切换架构以使用Shared 变量范围时,UFL 并未自动包含在安装中;它需要手动添加。这个决定“打破”了很多报道。虽然这不完全是文件格式兼容性问题,但这是我唯一一次记得他们(SAP nee BusinessObjects nee Crystal Decisions nee Seagate Software)的行为不受惩罚。