.NET执行引擎和BCL(基类库)的合作

时间:2018-07-16 14:50:23

标签: .net clr base-class-library cls

当前,我正在阅读一本书,由Andrew Troelsen和Philip Japikse撰写,书中包含.NET和.NET Core的C#Pro 7,是我编程理论的补充内容。对我而言,此时令我着迷的主题是与.NET基类库(例如mscorlib.dll)协作的.NET执行引擎(mscoree.dll)。

有人可以告诉我为什么在编译为指令集平台期间我们的解决方案代码与BCL交互的原因是什么?

  1. 该比较(BCL和mscorlib.dll)是我们的代码与使用的基类代码之间的一种额外兼容性检查吗? (检查名称约定,返回类型等)
  2. 或者它只是使用了存储在mscrolib.dll中的类的原始结构的构造,并且类似于“布局层”,可以在其中应用我们的值,然后返回输出信息?

“ CLR还将在需要时与.NET基类库中包含的类型进行交互”。此语句的“必需”部分究竟是什么意思?因为这又是我想以正确的方式理解的事情:)

1 个答案:

答案 0 :(得分:0)

我刚开始读这本书。也许您已经找到了答案,但是对于好奇的人,我会付两美分。

为了使编译后的代码在平台上运行,应将其编译为平台特定的指令。但是在此之前,应将代码编译为MSIL文件。 对于应用程序代码,每次进行更改时都会生成此MSIL文件,并且发生在CLR之前。 对于BCL,已经存在程序集(MSIL文件),并且在CLR中应仅将它们加载到内存中。因此,运行时引擎可以确定哪些确切的程序集应转换为特定于平台的指令并加载到内存中。

所以

  

CLR也将与.NET中包含的类型进行交互   基类库在需要时

这意味着它将查看代码中引用了BCL中的哪些类型。