C#在.NET编译执行过程
2014-03-22 12:47
176 查看
1..NET语言的编译器接受源代码文件,并生成名为程序集的输出文件。
程序集要么是可执行的,要么是DLL程序集里的代码并不是本机代码,而是一种名称为CIL的中间语言
程序集包含如下信息:
程序的CIL
程序中使用的类型的元数据
对其他程序集引用的元数据
2. 程序的编译过程
程序的CIL直到它被调用运行时才会被编译成本机代码。在运行时,CLR执行下面步骤:检查程序集的安全特性
在内存中分配空间
把程序集中的可执行代码发送给实时编译器(JIT),把其中的一部分编译成本机代码。
程序集中的可执行代码只在需要的时候由JIT编译器进行编译,然后它就被缓存起来以备在后来的程序中执行。这就意味着不被调用的代码不会被编译成本机代码,而且被调用的代码只被执行一次。
一旦CIL被编译成本机代码,CLR就在它运行时管理它,执行像内存释放、数组边界检查、检查参数类型、异常管理等任务。有两个重要的术语由此而生。
托管代码:为.NET框架编写的代码称为托管代码,需要CLR
非托管代码:不在CLR控制下运行的代码,比如Win32 C/C++ DLL,称为非托管代码
3.编译和执行过程图
![](http://images.cnitblog.com/blog/75468/201403/221247118816887.jpg)
相关文章推荐
- 编程笔记-C# 读取excel的数据
- C#使用POI把DataGridView中数据导出到excel文档中
- C# 可访问性不一致
- C#中static void Main(string[ ] args)中的作用及解释
- C#关于空值的总结
- c#第三方控件地址
- c#第三方控件地址
- C# WinForm 进度条可复用窗口设计
- 改善C#编程的50个建议(6-10)
- 初学C#——选号器
- C#获取系统时间
- 使用C#对XML进行增删改查操作
- VS2010、C#、Emgu CV配置 ; 在C#下使用OpenCV ; C#中使用OpenCV(Emgu CV); 配置全程截图
- C#treeView控件单击事件选中节点的问题
- 转载:C#中的泛型
- 关于C#事件中sender
- C#导出Excel,并且设置Excel单元格格式,合并单元格.
- C#导出Excel,并且设置Excel单元格格式,合并单元格.
- C#的一些知识点
- C#小常识