C#程序的编译和执行
1.在讲解 C# 程序的编译与执行之前,首先了解以下两个概念,以便充分理解C# 程序的运行。
CLI--Common Language Infrastructure 的简称,C# 程序在Microsoft .NET Framework 上运行时,
它是 Windows 的一个必要组件,包括一个称为公共语言运行库(CLR,在第1章中对该内容有过详细讲解)的虚拟执行系统和一组统一的类库。
IL--Intermediate Language 的简称,称为中间语言,又称为 MSIL。所有Microsoft .NET 源代码(使用任何语言)被编译为 IL,
然后在软件的安装点上或者运行时,IL 由即时(JIT)编译器转换为机器码。
图2.1演示了C# 源文件、基类库、程序集和 CRL 的编译与执行过程。
第一阶段--把 C# 编写的源文件编译为一种符合 CLI 规范的中间语言(IL)。IL 代码与资源(如位图和字符串)一起作为一种称为
程序集的可执行文件存储在磁盘上,通常具有的扩展名为 .exe 或 .dll。
第二阶段--执行 C# 程序时,程序集将加载到 CLR 中,这可能会根据清单中的信息执行不同的操作。如果符合安全要求,
CLR 执行即时(JIT)编译以将 IL 代码转换为本机机器语言。CLR 还提供与自动垃圾回收、异常处理和资源管理有关的其他服务。
由 CLR 执行的代码有时称为"托管代码",它与编译为面向特定系统的本机机器语言的"非托管代码"相对应。


C#程序的编译和执行的更多相关文章
- Linux环境下c程序的编译和执行
1 单个文件的编译和执行创建main.c文件,内容如下: #include <stdio.h> #include <stdlib.h> int main(void){ prin ...
- [学习笔记]java基础Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行
本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/25745945 内容简介: ------------ ...
- (三)java程序的编译和执行
编写java程序 eg class Demo { /* * 程序运行的入口 */ public static void main(String[] args) { System.out.println ...
- C++程序设计基础(1)程序的编译和执行
注:读<程序员面试笔记>笔记总结 1.编译执行过程 1.1预处理: (1)所有以#开头的代码都属于预处理的范畴:#include,#define,#ifdef(#ifndef,#endif ...
- "Hello World " —— 深入理解程序从编译到执行
对于C语言编写的Hello World程序(例如以下).对于程序猿来说肯定如雷贯耳,就是这样一个简单的程序,你真的了解她吗? #include <stdio.h> int main() { ...
- 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序
如何用javac 和java 编译运行整个Java工程 (转载) http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...
- 在命令符模式下编译并执行Java程序
对于Java初学者,建议使用纯文本文件来编写Java程序,并在命令符模式下使用工具程序编译和执行Java程序.使用javac工具编译.java,使用java工具执行.class.(推荐sublime编 ...
- Linux环境下编译并执行ava helloworld程序
原文:http://blog.lupaworld.com/home-space-uid-24466-do-blog-id-2578.html 已经学会怎样在Windows下怎样编辑,编译和运行Java ...
- 创建、编译、执行 java程序
java源文件(.java)——Java字节码文件(.class)——在java虚拟机上执行 其他语言很多是编译后执行,所以无法跨平台
随机推荐
- 在执行 Database.SqlQuery Method (String, Object[]) 执行中出现错误
执行类似于 var params = new SqlParameter[]{--}; Database.SqlQuery<Type>(sql1,params); Dat ...
- zbar
源码下载链接:http://sourceforge.net/projects/zbar
- nodejs npm包管理常用命令介绍
1.输入 npm config ls -l 可以查看当前的设置 2.针对某一项设置,可以通过下面方式: npm config set 属性名 属性值 eg:npm config set prefix ...
- 【语义分割】PSPNet中PSP模块的pytorch实现
github地址:https://github.com/Lextal/pspnet-pytorch/blob/master/pspnet.py PSP模块示意图如下 代码如下 class PSPMod ...
- JavaWeb学习笔记(十一)—— JavaWeb开发模式【转】
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- day44--浮动和清浮动基本小结
浮动和清浮动 一:浮动 浮动元素会生成一个块级框,而不论它本身是何种元素. 关于浮动的两个特点: 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 由于浮动框不在文档的普 ...
- POJ - 1948 二维01背包
T了两发,DP方程很简单粗暴 dp[i][j][k]:用前i物品使得容量分别为j和k的背包恰好装满 背包的调用只需一次即可,第一次T就是每次check都丧心病狂地背包一次 对于sum的枚举,其实i j ...
- shell编程下
第1章 Whicle 1.1 while循环语句 在编程语言中,while循环(英语:while loop)是一种控制流程的陈述.利用一个返回结果为布林值(Boolean)的表达式作为循环条件,当这个 ...
- Ionic3,懒加载(二)
Ionic懒加载: 普通的ionic项目中,创建好每一个Component页面后,都需要在app.module.ts中进行declaration(声明)后才能进行调用,而这样的声明方式,及在APP加载 ...
- 解决matplotlib绘图中文乱码
# 指定默认字体 下面三条代码用来解决绘图中出现的乱码 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] matplotlib.rcParams[ ...