If you are not using COM and unsafe stuff, pure managed code should build for 64-bit without changes.
If you're using 32-bit COM interop, you will have to build a 32-bit target (which will run in WOW64 on 64-bit systems). If you're using unsafe pointers, then you will most certainly have to add a couple of #if/#endif blocks here and there. Also, if you are passing information to 32-bit managed apps using .Net binary serialization, it won't work unless you implement your own serialization format.
Check
this link for some guidelines, here is what it says:
As mentioned earlier, if you have 100% type safe managed code then you really can just copy it to the 64-bit platform and run it successfully under the 64-bit CLR.
But more than likely the managed application will be involved with any or all of the following:
* Invoking platform APIs via p/invoke
* Invoking COM objects
* Making use of unsafe code
* Using marshaling as a mechanism for sharing information
* Using serialization as a way of persisting state