运行代码

更新:2007 年 11 月

公共语言运行库提供了使托管执行能够发生并提供可以在执行期间使用的各种服务的结构。在运行方法之前,必须先将其编译为特定于处理器的代码。当首次调用已经为其生成 Microsoft 中间语言 (MSIL) 的每个方法,然后运行该方法时,该方法将是实时编译的(JIT 编译)。下次运行该方法时,将运行现有的 JIT 编译的本机代码。这种进行 JIT 编译然后执行代码的过程一直重复到执行完成时为止。

在执行过程中,托管代码接收若干服务,这些服务涉及垃圾回收,安全性,与非托管代码的互操作性,跨语言调试支持,增强的部署,以及版本控制支持等。

在 Microsoft Windows XP 和 Windows Vista 中,操作系统加载程序通过检查通用对象文件格式 (COFF) 头中的某个位来检查托管模块。所设置的位表示托管模块。如果加载程序检测到托管模块,它将加载 mscoree.dll。_CorValidateImage 和 _CorImageUnloading 将分别在加载和卸载托管模块时通知加载程序。_CorValidateImage 执行下列操作:

  1. 确保代码是有效的托管代码。

  2. 将映像中的入口点更改为运行库中的入口点。

在 64 位的 Windows 上,_CorValidateImage 会修改内存中的映像,将其从 PE32 格式转换为 PE32+ 格式。

请参见

概念

托管执行过程

其他资源

.NET Framework 中的安全性

与非托管代码交互操作

部署 .NET Framework 应用程序