If a .NET program directly or indirectly needs to call platform dependent/native/unmanaged code it might crash.
This 32-bit/64-bit theme came into my mind after I got a new laptop with Windows 7 64-bit installed and tried to develop with the SQLite database.
System.Data.SQLite
contains managed code plus unmanaged code. There is a 32-bit version and a 64-bit. Both have the same filename, but different size, and your EXE file must use the right one.
To make it more complicated: My Visual Studio 2010 debugger is a 32-bit application, so I cannot debug when using "System.Data.SQLite-64bit" from the GAC!
As .NET developers we need guidelines/know-how/best practices.
And the best place to collect this kind of information that I know of is this site.
So please, share your ideas and known issues which could serve as best practices or guidelines to survive in the 32/64/anyCPU .NET world.
I would favor one issue/trick per "answer" so it can be commented/updated/referenced easily.
- feel free to give several "answers".
I will share my own knowledge as answers to this question, too.