.NET Core代码执行
作者:-- 发布时间:2019-11-20
在本章中,我们将了解.net core的执行过程,并将其与.net framework进行比较。被管理的执行过程包括以下步骤。
- 选择一个编译器
- 编译代码成msil
- 将msil编译为本地代码
- 运行代码
注:感觉有点像java的机制了。
参考下图中的流程 -
![]()
1. 选择一个编译器
- 它是一个多语言执行环境,运行时支持各种数据类型和语言功能。
- 要获得公共语言运行时提供的好处,必须使用一个或多个定位运行时的语言编译器。
2. 编译代码成msil
- 编译将您的源代码翻译成microsoft中间语言(msil)并生成所需的元数据。
- 元数据描述了代码中的类型,包括每种类型的定义,每种类型成员的签名,代码引用的成员以及运行时在执行时使用的其他数据。
- 运行时在执行过程中根据需要从文件以及框架类库(fcl)中查找和提取元数据。
3. 将msil编译为本地代码
- 在执行时,即时(jit)编译器将msil转换为本地代码。
- 在编译期间,代码必须通过验证过程,检查msil和元数据,以确定代码是否可以被确定为类型安全的。
4. 运行代码
- 公共语言运行库提供了执行过程的基础结构和执行过程中可以使用的服务。
- 在执行期间,托管代码接收垃圾收集,安全性,与非托管代码的互操作性,跨语言调试支持以及增强的部署和版本支持等服务。
.net core代码执行过程
现在来看看一下如何使用.net core与.net framework进行代码执行。在.net core中,这些组件的很多替代品都是.net framework的一部分。执行流程图如下所示 -
![]()
- 现在在.net core中,我们有了一个新的编译器系列,就像用于 c# 和vb的roslyn一样。
- 如果想在.net core中使用f#,也可以使用新的f# 4.1编译器。
- 实际上,这些工具是不同的,如果使用c# 6或更高版本,也可以使用roslyn和.net framework,因为c#编译器最多只能支持c# 5。
- 在.net core中,没有框架类库(fcl),所以使用了一组不同的库,现在有了corefx。
- corefx是.net core的类库的重新实现。
- 也有一个新的运行时间与.net core coreclr,并利用jit编译器。