Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which version of Crystal Reports do I reference (32-bit or 64-bit) when developing?

I'm currently using VS 2012 on a 64-bit PC, using Crystal Reports for VS 2012.

After installing Crystal Reports for VS 2012, I noticed there are 2 main folders:

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

The app that I'm going to deploy can be deployed on both 32-bit and 64-bit PCs, so which Crystal Reports DLLs should I reference? x86 or x64?

Or do I need to have 2 separate solutions, one with the x86 dlls referenced, and the other with x64?

Update:

What I did was to reference the x86 dlls when developing, and install the x86 redistributable version of crystal reports on all my deployment machines, regardless of its architecture. Hope that helps some of you guys out there

like image 983
Null Reference Avatar asked Jun 21 '13 03:06

Null Reference


People also ask

What version of Crystal Reports is installed?

To locate version information within the Crystal Reports application: Click on Help > About. Note the number that is listed after Product Version. Compare the version number to the table below.

Does anyone still use Crystal Reports?

Many organizations are still operating legacy versions of Crystal Reports, and there is a cost to upgrade to the most current version. And even once a company shells out the cost of the upgrade, there is work to be done.

Can I install multiple versions of Crystal Reports?

Crystal Reports does not support multiple versions of their design tool or runtime to be installed simultaneously and therefore nor does IFS Applications.


1 Answers

I know this isn't technically an answer to your question, but since it still remains unanswered even after having set a bounty, I thought I might suggest it anyway…

You might re-consider whether you really need a 64-bit version of your application. Most line-of-business applications (which I can assume is what you're building, since you're generating reports from it) do not really benefit from being 64-bit.

You can build and distribute only a 32-bit version (x86) and it will still run on all machines, regardless of whether they are running a 32-bit or 64-bit version of Windows. This is because all 64-bit versions of Windows include a special subsystem (Windows-on-Windows, or WOW64) that runs 32-bit code. It's entirely seamless, and there are virtually no compatibility problems to speak of.

Lots of applications are deployed this way. Visual Studio itself is an excellent example: it's still 32-bit code, but runs fine even on 64-bit versions of Windows, thanks to WOW64.

So to do this, you just set your project to target x86 platforms, and reference 32-bit DLLs exclusively. Since you'll only be building a single binary, this would greatly simplify development and distribution efforts, not only in terms of figuring out which DLLs to reference, but also the amount of code you need to test and the distribution process itself.

If you write good code that follows standard idioms and recommended practices, adding 64-bit support later (if it ever does prove to be of some benefit for your case) would be a fairly trivial operation. The .NET Framework abstracts away platform-specific differences extremely well; that's how they can offer an "Any CPU" targeting option.


Aside from that, if I am allowed to speculate (because I have no particular experience with Crystal Reports), I imagine that the public interface is identical for both the 32-bit and 64-bit DLLs.

In that case, you can just reference the 32-bit version for your development work, and then configure your build script to pick the correct version of the DLL depending on whether you're building a 32-bit or 64-bit binary.

Naturally, the installer would need to make the same choice, either during the install (if you're using a unified installer) or when you build the installer itself (if you have separate 32-bit and 64-bit installers).

like image 85
Cody Gray Avatar answered Sep 30 '22 18:09

Cody Gray