CLR是如何被加载并工作的_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > CLR是如何被加载并工作的

CLR是如何被加载并工作的

 2014/12/12 11:46:04  Darren Ji  程序员俱乐部  我要评论(0)
  • 摘要:当运行Windows应用程序的时候,CLR总是默默地为服务着。CLR到底是如何被加载并运行呢?首先,Microsoft专门为CLR定义了一个标准的COM接口。安装某个版本的.NETFramework,CLR被包含在DLL中,作为COM服务器在Windows注册表中注册。一台电脑上可能安装多个版本的CLR。打开开发人员命令提示,输入CLRVer.exe,可以看到当前电脑上安装的CLR版本。比如,在C:\Windows\Microsoft.NET\Framework\v2.0.50727文件夹中
  • 标签:工作

当运行Windows应用程序的时候,CLR总是默默地为服务着。CLR到底是如何被加载并运行呢?

 

首先,Microsoft专门为CLR定义了一个标准的COM接口

 

安装某个版本的.NET Framework,CLR被包含在DLL中,作为COM服务器在Windows注册表中注册。

 

一台电脑上可能安装多个版本的CLR。打开开发人员命令提示,输入CLRVer.exe,可以看到当前电脑上安装的CLR版本。

比如,在C:\Windows\Microsoft.NET\Framework\v2.0.50727文件夹中,CLR被包含在mscorwks.dll中;在C:\Windows\Microsoft.NET\Framework\v4.0.30319文件夹中,CLR被包含在clr.dll中。

 

当双击一个应用程序,就启动一个独立的Windows进程,在.NET最新版本文件夹中有一个类似MSCoreEE.dll的组件去读取应用程序的.NET版本,然后把对应的某个CLR版本加载到进程中。总之,CLR是寄宿在进程内的。

 

一个进程中可以有几个CLR版本吗?
从.NET 4.0起,就可以在一个进程中加载多个CLR版本,而且还不会造成兼容性的问题。

 

CLR是什么时候卸载的?
只有当终止进程的时候才能卸载CLR。

 

CLR加载mscorlib中所有的程序集。

 

CLR加载托管堆。

 

CLR加载应用程序域,而且还可以加载多个应用程序域,默认加载的应用程序域是被设置为"启动项目"的那个。

 

在应用程序域内运行多个线程,有些线程是主线程,有些线程是工作线程。

 

发表评论
用户名: 匿名