mscorlib代表什么?

85
'

'mscorlib' 绝对是 .NET 基类库之一,每个 C# 程序都依赖于它,但它代表什么意思呢?

在 ECMA 的 C# 语言规范 中,这个词出现了四次,但没有一个是指它的含义。

'

6
猜测可能是微软核心库... - Andrew Barrett
3个回答

86

12
实际上,“ms”现在代表“多语言标准”,因为涉及到政治问题。 - BlueRaja - Danny Pflughoeft
5
它成为了 ECMA 标准,因此不能以标准化委员会的任一成员命名。 - Mark Cidade
11
几乎。它是多语言标准通用对象运行库。参见:《C# 6.0入门经典》(第199页)。 - DDan

44

Microsoft核心库,即它们是一切的核心。

这里有一个更“精练”的解释:

“当微软开始着手.NET框架时,MSCorLib.dll代表Microsoft Common Object Runtime Library的首字母缩写。一旦ECMA开始标准化CLR和FCL的某些部分,MSCorLib.dll正式成为Multilanguage Standard Common Object Runtime Library的首字母缩写。”

来源:http://weblogs.asp.net/mreynolds/archive/2004/01/31/65551.aspx

据我个人记忆,大约在1999年左右,.Net被称为“COOL”,因此我对这个起源有些怀疑。我从未听说过它被称为“COR”,这对于以英语为母语的人来说是一个听起来很傻的名字。


个人而言,我会用单数形式来表达(“Library”),但这确实描述了意图。 - Marc Gravell
4
COOL是“C-like Object Oriented Language”的缩写,曾是C#的工作名称(而非.NET框架)。由于商标原因,他们无法使用COOL这个名称,因此将其更名为“C#”。请注意,不改变原文意思并尽可能让翻译更通俗易懂。 - Andrew Trevers
2
我认为这应该是被接受的答案,因为它不仅是第一个发布的,而且也是最正确的。Microsoft重新命名了mscorlib,所以“ms”现在代表“多语言标准”,而不是“Microsoft”。这是唯一一个实际上给出了正确的当前名称和原始名称的答案。更正式的来源,请参见http://www.microsoft.com/mspress/books/index/5353a.aspx,它显示微软出版社出版的一本书在2002年就将其作为官方名称。 - Adi Inbar
2
我从未听说过“COR”,对于一个以英语为母语的人来说,这是一个听起来很傻的名字。你在这里想表达什么?对我来说,“COR”代表公共对象运行时似乎是合理的。 - danio
1
COOL的名字确实是在Steve Ballmer和他的同伴们在高尔夫球场上有一天恍然大悟后,被重命名为C#的语言,基本上是因为常见的英文单词“cool”无法注册商标。编译器曾经叫做coolc.exe,在改名为csc.exe之前。无论如何,COOL不是.NET的名称,而是成为C#编程语言的名称,COR是公共对象运行时。 - Craig Tullis

37

它代表着

微软公共对象运行库

它是框架公共库的主要程序集。

它包含以下命名空间:

 System
 System.Collections
 System.Configuration.Assemblies
 System.Diagnostics
 System.Diagnostics.SymbolStore
 System.Globalization
 System.IO
 System.IO.IsolatedStorage
 System.Reflection
 System.Reflection.Emit
 System.Resources
 System.Runtime.CompilerServices
 System.Runtime.InteropServices
 System.Runtime.InteropServices.Expando
 System.Runtime.Remoting
 System.Runtime.Remoting.Activation
 System.Runtime.Remoting.Channels
 System.Runtime.Remoting.Contexts
 System.Runtime.Remoting.Lifetime
 System.Runtime.Remoting.Messaging
 System.Runtime.Remoting.Metadata
 System.Runtime.Remoting.Metadata.W3cXsd2001
 System.Runtime.Remoting.Proxies
 System.Runtime.Remoting.Services
 System.Runtime.Serialization
 System.Runtime.Serialization.Formatters
 System.Runtime.Serialization.Formatters.Binary
 System.Security
 System.Security.Cryptography
 System.Security.Cryptography.X509Certificates
 System.Security.Permissions
 System.Security.Policy
 System.Security.Principal
 System.Text
 System.Threading
 Microsoft.Win32 

关于MSCorlib的有趣信息:

  • .NET 2.0程序集将引用和使用2.0 mscorlib。.NET 1.1程序集将引用1.1 mscorlib,但在运行时将使用2.0 mscorlib(由于运行时本身中的硬编码版本重定向)
  • GAC中只有一个版本的mscorlib,在GAC上找不到1.1版本,即使您已在计算机上安装了1.1框架。如果有人能解释为什么MSCorlib 2.0单独存在于GAC中,而1.x版本则位于框架文件夹内,那就太好了。
  • 是否可以通过在应用程序/ web.config中进行配置设置来强制加载不同的运行时?在ConfigurationFile中设置CLR版本后,CLR将已经在运行,并且每个进程只能有一个CLR。选择CLR后,将加载适用于该CLR的MSCorlib。

8
它包含以下命名空间 - 这在您使用的版本(即目标平台)上有很大的依赖性。并不需要非常多。 - Marc Gravell
“mscorlib” 是 Multi-language Standard Common Object Runtime Library 的缩写(C# 6.0 in a Nutshell - The Definitive Reference (第199页))。 - Code Pope

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接