While reading Troelsen's book "Pro C# 5.0 and the .NET 4.5 Framework", I came across those 2 terms. I understand more or less what a Common Language Runtime(CLR) is, but is ".NET runtime" the same thing as CLR ?
I suppose it is.
公共语言运行时是 .NET 运行时的特定实现,但也有其他的——即Mono 运行时。
标准 ECMA-335中定义的通用语言基础设施(CLI)描述了以下内容:
VES 在此列表中脱颖而出(它不是Common),并且是对假设运行时系统的描述。实际的运行时实现通常称为公共语言运行时(CLR),但该术语并未出现在 ECMA-335 中。
CLI 有多种实现:.NET Framework、.NET Micro Framework、XNA Framework、Silverlight、Mono 平台等……每个平台或框架都实现了一个或多个版本的 CLR。
有 Microsoft CLR(又名 .NET CLR),通常称为 .NET 运行时。还有一个 Mono CLR,通常称为 Mono 运行时。还有 Silverlight CLR 和 .NET Compact CLR。
由于 Microsoft CLR 是第一个也是最著名的 CLR,因此对 CLR 一词的不合格使用通常指的是没有特定版本的 .NET 运行时。但是 CLR不是.NET 运行时的特定实现......它是相反的。
CLR 是.NET 程序所需的运行时支持的一部分。相当重要的一部分,但它不是唯一的。您总是会在 .NET 进程中加载一组本机 DLL。您可以通过打开非托管调试,项目+属性,调试选项卡,勾选“启用非托管代码调试”来查看它们。启动后,您可以在 Debug + Windows + Modules 窗口中看到这些 DLL。
我将记录 .NET 4.5 版的名称:
您还会看到从 c:\windows\system32(Windows 操作系统 DLL)加载的一堆 DLL。重要的是 ntdll.dll、kernel32.dll 和 user32.dll。在典型的 .NET 进程中还有更多。您不能真正将它们算作 .NET 运行时组件,因为 Windows 中的每个进程都会使用它们。