Если вы используете p / invoke, вы должны быть уверены, что у вас есть 64-битные версии доступных DLL-библиотек. Это не проблема, если вы вызываете предоставляемые MS библиотеки DLL, такие как kernel32, так как они имеют одинаковые имена на 32- и 64-битных платформах (странно, я знаю), и поэтому ваше 64-битное приложение неявно ссылается на правильные версия. Однако если вы используете сторонние библиотеки DLL и ваше 64-битное приложение пытается установить связь с 32-битной библиотекой DLL, вы получите исключение времени выполнения.
Это также означает, что если вы используете внутрипроцессный COM-объект, у вас возникнут проблемы. 64-битное приложение может вызывать внепроцессный COM-объект, который является 32-битным (и наоборот), когда вы пересекаете границу процесса, и COM позаботится о распределении для вас.
Кроме этого, фреймворк заботится о большинстве вещей для вас. Вам никогда не придется беспокоиться о размерах указателя, а типы clr имеют явные размеры (int всегда 32 бит, длинный всегда 64 бит). В чистом мире .NET очень мало о чем беспокоиться. Когда вы начинаете выходить из песочницы, вам следует быть более осторожным.