.NET Framework是开发应用程序的一个平台.注意,这里没有说”在Windows操作系统上”,尽管.NET Framework发布的第一个版本运行在Windows操作系统上,但以后将推出运行在其他操作系统上的版本.
另外,上面给出的.NET Framework定义并没有限制应用程序的类型.这样设置.NET Framework,是为了让它可以适应各种语言,目前,出现了C++,VB,Jscript语言的NET版本.所有的这些语言都可以访问.NET Framework.它们还可以彼此交互,C#开发人员可以使用VB.NET程序员编写的代码.这是很诱人的.二. NET Framework的内容
.NET Framework主要包含一个非常庞大的代码库,这些代码可以在客户语言(如C#,VB.NET,VC++.NET)中通过面向对象编程技术来使用.这个库(的代码)分为不同的模块,这样就可以根据需要来选择使用某个部分(代码或者模块).其目的是,不同的操作系统可以根据自己的特性来支持其中的部分或者全部(代码或者模块),例如.PDA支持核心的.NET模块,但不需要支持某些不需要的模块.为了便于使用.NET Frameweok在各种语言之间交互操作,部分.NET Framework库定义了一些最基本的基本类型(如32位带符号的整数),称为“通用类型系统(CTS)”。
除了支持这个库以外,.NET Framework还包含.NET公共语言运行时(CLR),它负责管理用.NET库开发的所有应用程序的执行.可以将它看做是程序运行时管理代码的代理.三.开发发.NET Framework程序的步骤
    1. 选择客户语言.使用.NET Framework编写程序.就是使用支持.NET Framework的任何一种客户语言(如C#,VC++.NET)来使用.NET代码库编写托管代码..
    2. 将代码编译为可移植可执行文件(PE)。要想程序运行,就得将程序编译为本机代码,客户语言(不是.NET Framework)通过以下方式实现:
       1. 通过客户语言的编译器将代码编译为MSIL.MSIL(微软中间语言)是一组可以有效转换为本机代码且独立于机器,CPU和操作系统的指令.
       2. 将MSIL和元数据编译为托管模块.当客户语言编译器将代码编译为MSIL时,一定会产生元数据.元数据顾名思义就是用来描述代码,运行库在执行时使用的其他数据.元数据和MSIL共同组成了托管模块.
       3. 将资源集,程序集清单,以及托管模块编译为程序集.程序集清单是描述该程序集中各元素彼此如何关联的数据集合.
       4. 将程序集,CLR表头以及PE(可移植可执行文件)表头等编译为可一个可移植可执行文件.
       说明:以上过程是同时按顺序完成的.至此,我们就得到了一个可移植可执行文件了(或者是DLL).
3. 通过.NET Framework执行程序.注意,是通过.NET Framework来执行程序,也就是说,.NET Framework程序要得以运行,得先在目标机器上安装.NET Framework..那么.NET Framework是怎样执行程序的呢?
前面说了,MSIL对操作系统(可以延伸至CPU等硬件环境)来说没有任何意义,要想运行程序,得先将MSIL转换为本机代码,这个步骤由.NET Framework的实时(JIT)编译器(实时,就是需要时才编译的意思)来完成.
由于.NET Framework为所支持的各种操作系统(如FreeBSD,Linux,Macintosh,PDA(个人数字助手))都提供了各自的.NET Framework版本,这样,开发人员可以编写  一组可在具有不同操作系统(可以延伸至CPU等硬件环境)的计算机上进行(JIT编译和运行)的  MSIL.这就是.NET Framework跨平台(就是操作系统,大致上可以说”跨硬件”)的原理. 疑问:照这么说,.NET Framework是基于操作系统的?
将MSIL编译为本机代码后,.NET Framework的任务还没有完,它还要管理应用程序的执行,其方式是管理内存,处理安全性,进行垃圾回收等.