这篇文章里不想说一些书上都讲过的.NET框架,比如CLR,IL,CLS,元数据等。只是记载了一些自己在看书的时候觉得需要留意的地方。
1.怎么判断机器里安装了.NET?
在%windir%\system32目录下查找MSCorEE.dll文件是否存在。
这个文件很重要,非常重要。我们编译的每一个Assembly文件里的.idata里都描述了对这个文件的引用,并且在.text里有如下字节:
JMP _CoreExeMain (如果这个文件是exe文件)
或者
JMP _CoreDllMain (如果这个文件是dll文件)
方法_CoreExeMain或者_CoreDllMain都定义在MSCorEE.dll文件里,在这两个函数里,CLR将会被初始化,IL代码讲会编译成本地指令。
2.如何判断.NET版本
查看该注册表:
HKLM\SOFTWARE\MICROSOFT\.NETFramework\Policy
下面的子建。
3.代码如何编译
使用.NET编程,有一点必须要弄清楚:你的代码将会编译成IL,而非机器本地指令。你的代码在执行前将会经过两次编译,一次是从你的代码到IL,另外一次就是从IL到本地指令。第一阶段将是编译器的工作,如果你用的C#语言,那么C#编译器(csc.exe)将把你的代码编译成IL。第二阶段则发生在运行时,你的代码即将要运行的时候。这个时候JIT(Just-In-Time)将会把IL代码编译成具体的本地指令。这些本地指令将会存储在内存里,并且当你关闭程序的时候,这些本地指令就会释放。这个地方有两点需要注意:1)你的程序每启动一次,JIT就会将你的IL代码编译成本地代码一次。2)如果你的程序在不同架构的机器上运行,比如CPU类型不同,单核和多核,JIT编译后的本地指令将会不一样。
华为云云速建站怎样/冯耀宗seo教程
转载于:https://www.cnblogs.com/xiaxili/archive/2008/06/15/1222730.html