我发现“EE”对我来说是一个神奇的词。
在CLR内部,有一个“EEClass”,由CLR类加载器创建。而且我不知道为什么它被称为EEClass。
现在,来到SOS世界,这里有更多的EE,就像 EEHeap,EEStack [-EE],Name2EE .... 它们在这里是否代表相同的含义?
答案 0 :(得分:39)
CLR在用于运行.NET代码之前很久就开始了。作为项目42中的通用运行时开始,这是一个失败的高级项目,但其部分在后续项目中幸存下来,如.NET。在作为.NET的执行引擎发展之前,继续进入NGWS(下一代Windows服务)。 42是该小组在微软园区工作的建筑物编号。
在SSCLI20源代码和您在调试器和头文件中看到的名称中可以看到几个首字母缩略词。他们中的一小部分:
URT,Universal Runtime。古代,它只是保留在您从托管代码中获得的本机错误代码中,它们在WinError.h头文件中具有工具代码19,FACILITY_URT。这使得任何此类错误代码值为0x8013xxxx。
COM +或COMPlus。同样古老的,COM +是COM的演变,值得注意的是失去了对Java的中间件战争以及微软中具有主要Project 42职责的团体的名称。仍然可以在异常名称中看到,包括任何.NET异常的本机异常代码:0xe0434f4d。 434f4d是“COM”的ASCII代码。 CLR本身实际上只使用很少的COM代码,只是为了从pdb和自定义托管,调试器和分析器接口生成堆栈跟踪。
COR,Common Object Runtime。项目42位后开始出现的首字母缩略词。存在SDK头文件的所有名称,如Cor.h,CorError.h,CorDebug.h和几个托管api名称,如CorBindToRuntimeEx。在.NET 4版本btw。
EE,执行引擎。出现在CLR的部分名称中,这些部分专门用于运行.NET代码。你发现了。
SOS,罢工之子。一种调试器扩展,它使用DAC(数据访问组件)挂钩并显示内部CLR数据结构。 Strike是用于获得.NET 1.0版本的调试器扩展的名称,当它具有内部项目名称Lightning时。照明打击,你得到它。演变为一般调试工具,从而成为Strike的儿子。从mscordacwks.dll运行时支持DLL中可以看到DAC,并且当您尝试加载使用不同CLR版本创建的minidump时会收到错误消息。
.NET Framework源代码中也突出显示内部项目名称。 .NET 1.0是Lightning,.NET 1.1是Everett,.NET 2.0是Whidbey,WPF是Avalon,WCF是Indigo。
目前正在进行一项涉及CLR的类似高污染项目。超级秘密,其代号为Midori。人们对此知之甚少,除了它旨在实现基于托管代码的整个操作系统。关于其他出版的奇点原型的后续行动。