C# 编译运行原理

摘要:
这里是对C#程序的编译和操作原理的简要总结。如果有任何错误,请更正。

  这里对C#程序的编译运行原理进行简单的总结,如有错误,欢迎指正。

  通过VS编写的程序,F5就能执行,其中的过程又是怎样的呢,让我们先了解几个概念:

  1 CSC.exe .Net Framework下的编译器

  作用:将C#等源程序编译为程序集,程序集包括EXE文件或DLL文件

  编译过程包括语法检查和源程序分析

  2 MSIL CIL IL (Intermediate Language) 三者的概念是相同的,即微软中间语言,它介于高级语言和汇编语言之间

  3 JIT (Just in Time) 即时编译器

  作用:将MSIL编译为本机指令,实际是优化以匹配操作系统和CPU

  4 CLR (Common Language Runtime) 公共语言运行时,是.Net 框架的核心之一,本质是一段驻留在内存中的代理代码,

  为.Net 应用程序提供托管的代码执行环境

  作用:管理应用程序,包括内存管理、安全管理及允许跨语言调试等

  5 托管代码:基于.Net 框架的在CLR管理下执行的代码,托管代码主要在内存管理方面具有自动性

  了解了以上的概念,你的心中是否呈现了C#程序的编译运行原理,如图所示:

  C# 编译运行原理第1张

  

免责声明:文章转载自《C# 编译运行原理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CentOS 7 修改时区例如上海时区Selenium2+python自动化36-判断元素存在【转载】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

LabView调用C#混合模式dll

在一些特定要求下,我们的C#可能需要制作dll给LabView进行调用,并且我们不能够保证C#的程序是完全自己写而不调用第三方的dll库。很多时候我们需要使用诸如Sqlite.Net、AForge.Net之类的开源库,此时我们发现我们需要使用混合模式去兼容这些由.NET 2.0版本运行时开发的开源库。 一、C#中的混合模式 如果是C#应用程序,那么我们只要...

Mono 开发 (使用.NET技术的你,绝对不能忽略Mono)

当微软把.NET提交到ECMA/ISO成为公开的标准时,就表示.NET已经走向开放,不再只是微软专属的技术。当Mono 1.0正式发布时,也就等于是宣布开放成真了,.NET程序不用被局限在Windows平台上,Mono可以让.NET程序在Windows、Linux、MacOS X、Solaris、BSD等操作系统上面运行,至于硬件平台,Mono也已经支持3...

几种常用库在CentOS下的编译

1操作环境 通过命令查看操作系统版本信息: [root@localhost ~]# cat /proc/version Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (G...

好代码是管出来的——使用GitHub实现简单的CI/CD

  软件开发一般来说是一项团队作业,在本系列文章开始就提到过软件的编码是由一个团队“并行”完成的,为了保证编码任务正常完成,首先引入版本控制工具来完成代码管理,为了保证代码质量引入了代码分析器以及代码测试。   版本控制工具可以保证代码有一个主版本,但代码分析和测试均是开发人员手动在本地完成的(通过编译、执行测试等方式),在进行代码分析和测试时可能并没有将...

C# 中使用JSON

C#中使用JSON不需要使用第三方库,使用.NET Framwork3.5自带的System.Runtime.Serialization.Json即可很好的完成JSON的解析。 关于JSON的入门介绍见(首页的图很形象): http://www.json.org/  一、Using 需要添加引用:System.ServiceModel.Web 和 Syst...

Docker的Jenkins Pipeline工作流

原文地址:http://www.youruncloud.com/blog/127.html 分享主题 一个软件产品的开发周期中,尤其是敏捷开发,持续集成和持续部署是必不可少的环节,而随着产品的丰富,模块的增多。随即带来了更加多的问题,各模块间编译环境的准备,编译复杂,耗时增加,还需要专人去负责这个流程。而Jenkins则可以很好的解决这个单一而容易出错的C...