首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"CLR“和".NET runtime”是一样的吗?

"CLR“和".NET runtime”是一样的吗?
EN

Stack Overflow用户
提问于 2013-05-05 22:04:03
回答 3查看 934关注 0票数 3

在阅读特罗尔森的书“专业C# 5.0和.NET 4.5框架”时,我偶然发现了这两个术语。我或多或少理解什么是公共语言运行库,但是".NET运行时“和公共语言运行库是一样的吗?

我想是的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-05 22:08:40

公共语言运行库是.NET运行库的特定实现,但也有其他实现-即the Mono runtime

票数 7
EN

Stack Overflow用户

发布于 2013-05-06 09:59:41

standard ECMA-335中定义的公共语言基础结构描述了其他内容:

  • 公共类型系统;
  • 公共语言规范;
  • 虚拟执行系统;
  • 公共中间语言。

VES在这个列表中脱颖而出(它不是通用的),并且是对假想的运行时系统的描述。实际的运行时实现通常称为公共语言运行时(CLR),但这个术语没有出现在ECMA-335中。

.NET框架、.NET微框架、XNA微框架、Silverlight、Mono等。每个平台或框架实现CLR的一个或多个版本。

还有Microsoft CLR (又称.NET CLR),通常称为.NET运行时。还有一个Mono CLR,通常称为Mono运行时。还有Silverlight CLR和.NET Compact CLR。

由于Microsoft CLR是第一个也是最知名的CLR,因此不加限制地使用术语CLR通常指的是没有特定版本的.NET运行时。但是CLR不是.NET运行时的具体实现...这是另一种方式。

票数 7
EN

Stack Overflow用户

发布于 2013-05-06 06:41:05

CLR是.NET程序所需的运行时支持的一部分。这是主要的一部分,但不是唯一的部分。您始终会在.NET进程中加载一组本机DLL。您可以通过打开非托管调试,项目+属性,调试选项卡,勾选“启用非托管代码调试”来查看它们。启动后,您可以在Debug + Windows + Modules窗口中看到那些DLL。

我将记录.NET 4.5版的名称:

  • mscoree.dll,“加载程序存根”。这就是加载你的.NET程序的方法。Windows对此动态链接库有特殊的了解,当它检测到.NET可执行文件时,加载程序会自动将控制权转移给它。它所做的一件非常重要的事情是将.NET进程转换为64位进程,即使EXE头本身指示32位process.
  • mscoreei.dll,作为默认的.NET主机。CLR需要使CLR适应所需的运行时特征的主机代码。自定义CLR宿主的示例有SQL Server和ASP.NET,以及在调试.NET程序时处于活动状态的Visual Studio宿主进程vshost.exe。此动态链接库还负责内置到CLR中的并行版本控制支持,允许一个进程具有多个版本的.NET 4+。
  • clr.dll,它是实时compiler
  • msvcr110_clr0400.dll,.NET C运行库的clr.dll。其他动态链接库是用C++编写的,这个动态链接库包含基本的运行时支持代码。你自己也会用到它,Math.Pow()最终会调用这个DLL中的

()函数。

您还将看到一组从c:\ Windows \system32加载的‘ll,即Windows操作系统’ll。重要的是ntdll.dll、kernel32.dll和user32.dll。在一个典型的.NET过程中有更多的东西。您不能真正将它们算作.NET运行时组件,因为Windows中的每个进程都将使用这些组件。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16385316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档