The Microsoft .NET Framework is the core “runtime” and libraries for all Microsoft .NET applications. On Windows x64, the Microsoft .NET Framework v1.1 will run as a 32-bit application – not as a 64-bit application. In the next release of .NET, the installer will install a native x64 version of the .NET framework, along with a 32-bit version (yes, TWO identical .NET Frameworks – one x64 and one 32-bit). To understand why Microsoft is doing this, let me explain how .NET applications really “work”.
When a developer is finished writing his application, he uses a .NET enabled compiler to compile his code into a .NET assembly (usually into a .exe or a .dll file). A .NET Assembly does not contain any architectural “machine” code, it contains “MSIL” – Microsoft Intermediate Language. When you run a .NET assembly, the .NET “CLR” – Common Language Runtime reads the MSIL and converts it into code that your architecture can understand.
With this in mind, why doesn’t .NET 1.1 run assemblies as an 64-bit process on Windows x64? The quickest answer would be, .NET 1.1 simply does not have any type of x64 support. So why not make a patch, or release an update to .NET 1.1 to make it support running 64-bit assemblies?
The answer is compatibility. In .NET, a developer can still use COM controls and make Win32 calls in their assemblies. A 64-bit application can’t host 32-Bit COM controls, and if you ran an assembly in 64-bit mode – it would have a problem if it made a 32-bit specific call.
In the next release of .NET, .NET 2.0, Microsoft will include x64 binaries and 32-bit binaries in the x64 setup. Microsoft also has added a new setting to the various .NET Compilers which determines which architecture you want your assembly to target – 32-bit, x64, IA64 (Itanium), or “anycpu”. If a developer specifies 32-bit, the application will run as a 32-bit application on Windows x64. If the architecture is set to “any cpu”, it will run on any .NET supported platform (providing it doesn’t use any architecturally specific calls).
Read the rest here