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.