By now it is obvious that you have a large investment in-house on 64-bit. Servers, desktops, laptops, etc. But how are your apps doing? Are they still on 32-bit? If so, you are not harnessing the true prowess of your hardware. But before you start designing your 64-bit application, here are the few things you need to keep in mind -

  1. In a chain of dependant assemblies, you should have processor-architecture purity. Either that, or they should be architecture neutral. This is to say that all your DLLs have to be 64-bit or "MSIL". You can have a mix of 64-bit and MSIL assemblies in a chain. But if you have a mix of 64 and 32-bit assemblies, then you might want to consider your application type.
  2. If your application is an IIS hosted web app, you may want to consider hosting all your 64-bit IIS apps on one server and all your 32-bit ones on another server. IIS can run only in 32 or 64 bit at a time and apps of both types cannot be running at the same time.
  3. A 64-bit assembly can call into a 32-bit assembly, but not vice-versa.
  4. Lastly, to be in true 64-bit mode, your entire software stack - drivers, OS and app - must be 64-bit.

I came across this puzzle about a month ago when a little app I was writing to automate one of my routine tasks had to go back to the drawing board because I'd designed it to be hosted in a 64-bit environment without considering that some of my core assemblies (binaries I couldnt recompile) were hard 32-bit. As more apps that we use regularly switch to being 64-bit and uber-powerful, we must act with care to have them running smoothly.