To make .net code machine independent. You can code your application in any machine and once u compile it, it generates MSIL. This MSIL can be executed on any machine which has CLR and CLR (using JIT) generates Native Code based on the machine's configuration on which you are executing the MSIL.