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#程序的编译和执行的更多相关文章

  1. Linux环境下c程序的编译和执行

    1 单个文件的编译和执行创建main.c文件,内容如下: #include <stdio.h> #include <stdlib.h> int main(void){ prin ...

  2. [学习笔记]java基础Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行

    本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/25745945 内容简介: ------------ ...

  3. (三)java程序的编译和执行

    编写java程序 eg class Demo { /* * 程序运行的入口 */ public static void main(String[] args) { System.out.println ...

  4. C++程序设计基础(1)程序的编译和执行

    注:读<程序员面试笔记>笔记总结 1.编译执行过程 1.1预处理: (1)所有以#开头的代码都属于预处理的范畴:#include,#define,#ifdef(#ifndef,#endif ...

  5. &quot;Hello World &quot; —— 深入理解程序从编译到执行

    对于C语言编写的Hello World程序(例如以下).对于程序猿来说肯定如雷贯耳,就是这样一个简单的程序,你真的了解她吗? #include <stdio.h> int main() { ...

  6. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  7. 在命令符模式下编译并执行Java程序

    对于Java初学者,建议使用纯文本文件来编写Java程序,并在命令符模式下使用工具程序编译和执行Java程序.使用javac工具编译.java,使用java工具执行.class.(推荐sublime编 ...

  8. Linux环境下编译并执行ava helloworld程序

    原文:http://blog.lupaworld.com/home-space-uid-24466-do-blog-id-2578.html 已经学会怎样在Windows下怎样编辑,编译和运行Java ...

  9. 创建、编译、执行 java程序

    java源文件(.java)——Java字节码文件(.class)——在java虚拟机上执行 其他语言很多是编译后执行,所以无法跨平台

随机推荐

  1. libcaffe.so.1.0.0: cannot open shared object file: No such file or directory 运行时报错

    caffe安装好后lib没有配置到/usr/lib或/usr/local/lib中,需手动配置: sudo vim ~/.bashrc export LD_LIBRARY_PATH=your_path ...

  2. Qt 学习之路 2(38):存储容器

    Qt 学习之路 2(38):存储容器 豆子 2013年1月14日 Qt 学习之路 2 38条评论 存储容器(containers)有时候也被称为集合(collections),是能够在内存中存储其它特 ...

  3. 【语义分割】PSPNet中PSP模块的pytorch实现

    github地址:https://github.com/Lextal/pspnet-pytorch/blob/master/pspnet.py PSP模块示意图如下 代码如下 class PSPMod ...

  4. [软件工程]团队介绍&学长采访

    项目 内容 这个作业属于哪个课程 2019春季计算机学院软件工程(罗杰) 这个作业的要求在哪里 第一次团队作业 - 采访! 我们在这个课程的目标是 团队开发,合作学习 1.团队介绍 岗位 人员& ...

  5. bzoj1818 内部白点(好题) 离散化+树状数组

    题目传送门 题意:给出很多黑点,当一个坐标上下左右都有黑点时,这个点也被染成黑色,问最后黑点的数量. 思路:首先,一个很显然的结论,不可能出现无限染色的情况.所以不会输出-1,当n为0或者1时,答案就 ...

  6. Oracle Merge 使用

    <转自> http://blog.csdn.net/nsj820/article/details/5755685 Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时 ...

  7. C++ GUI Qt4编程(11)-5.1hexSpinbox

    1. hexspinbox.cpp /* * The spin box supports integer values but can be extended to use different str ...

  8. PIE SDK PCA融合

    1.算法功能简介 PCA 融合分三步实现,首先将多光谱数据进行主成分变换,然后用高分辨单波段替换第一主成分波段,最后进行主成份逆变换得到融合图像. PIE支持算法功能的执行,下面对PCA融合算法功能进 ...

  9. PIE SDK去相关拉伸

    1.算法功能简介 由于高度相关的数据集经常生成十分柔和的彩色图像,因此经常使用 去相关拉伸工具来体消除多光谱数据集中的高度相关性, 从而生成一幅色彩亮丽的彩色合成图像.去相关拉伸需要 3 个输入波段, ...

  10. SpringBoot---开发的热部署

    1.模板的热部署 在SpringBoot中,模板引擎的页面默认是开启缓存的: 如果修改了页面的内容,则刷新不到修改后的页面: 可以在application.properties中关闭模板引擎的缓存: ...