当开发时,我需要引用哪个版本的Crystal Reports(32位还是64位)?

7

我目前在64位电脑上使用VS 2012,使用的是Crystal Reports for VS 2012。

安装完Crystal Reports for VS 2012后,我发现有两个主要文件夹:

  • Common\SAP BusinessObjects Enterprise XI 4.0\win64_x64
  • Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86

我将要部署的应用程序可以部署在32位和64位电脑上,因此我应该引用哪些Crystal Reports DLL?x86还是x64?

或者我需要拥有两个单独的解决方案,一个引用x86 dll,另一个引用x64?

更新:

我的做法是在开发时引用x86 dll,并在所有部署机器上安装x86 redistributable版本的Crystal Reports,而不考虑其架构。希望这对你们中的一些人有所帮助。


你是否计划使用像 InstallShield 或者 Chocolatey 这样的软件包管理器? - craig
是的,我正在使用InstallShield的Express版本。 - Null Reference
如果您构建了应用程序的64位版本,它是否会自动构建32位版本? - craig
似乎当我引用x64版本时,打包到安装程序项目中的Crystal Report DLL也是64位的。 - Null Reference
你需要做什么来构建你的应用程序的32位版本?你可能想要更新你的问题,而不是评论。 - craig
我不知道这在Install Shield中如何工作,但我会告诉你Click Once的情况。在Click Once中,无论架构如何,都需要x86。32位机器只需要x86,但是x64需要x86和x64。然而,仅将它们包含在发布中是不起作用的。您必须进入开发计算机上的Crystal的Bootstrapper文件夹,并更改product.xml,以便在x64机器上安装运行时的两个版本。 - Ally
1个回答

4

我知道这不是你问题的技术答案,但因为即使设置了悬赏,它仍然没有得到回答,所以我想建议一下...

您可以重新考虑是否真正需要您的应用程序的64位版本。大多数业务应用程序(我可以假设您正在构建此类应用程序,因为您正在从中生成报告)实际上并不受益于64位。

您可以构建和分发只有32位版本(x86),它仍然可以在所有机器上运行,无论它们是否运行32位或64位版本的Windows。这是因为所有64位Windows版本都包含一个特殊的子系统(Windows-on-Windows 或 WOW64),可以运行32位代码。它完全无缝,几乎没有兼容性问题。

许多应用程序都是以这种方式部署的。 Visual Studio本身就是一个很好的例子:它仍然是32位代码,但由于WOW64的存在,即使在64位Windows上也可以正常运行。

因此,要实现这一点,您只需将项目设置为针对x86平台,并且仅引用32位DLL。由于您只会构建单个二进制文件,因此这将极大地简化开发和分发工作,不仅在确定要引用哪些DLL方面,还在需要测试的代码量和分发过程本身方面。如果您编写符合标准习惯用法和推荐做法的良好代码,则稍后添加64位支持(如果它确实对您的情况有所帮助)将是一个相当琐碎的操作。.NET Framework非常好地抽象了平台特定差异;这就是他们可以提供“任何CPU”目标选项的方式。
除此之外,如果我被允许猜测(因为我没有特定的Crystal Reports经验),我想公共接口对于32位和64位DLL是相同的。在这种情况下,您可以只引用32位版本进行开发工作,然后配置您的构建脚本根据您正在构建32位或64位二进制文件来选择正确的DLL版本。当然,安装程序需要做出相同的选择,无论是在安装期间(如果您使用统一的安装程序)还是在构建安装程序本身时(如果您有单独的32位和64位安装程序)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接