.NET Execution Engine и BCL (библиотека базовых классов)

В настоящее время я читаю книгу под названием C# Pro 7 с.NET и.NET Core, написанную Эндрю Троелсеном и Филиппом Джапиксе как дополнительное дополнение к моей теории программирования. Тема, которая на данный момент является для меня курьезной, - это совместная работа механизма исполнения.NET (mscoree.dll) с библиотеками базовых классов.NET, например, mscorlib.dll.

Может кто-нибудь сказать мне, что является причиной, почему наш код решения взаимодействует с BCL во время компиляции на платформу с наборами инструкций?

  1. Это сравнение (BCL и mscorlib.dll) является чем-то вроде дополнительной проверки совместимости между нашим кодом и используемой методологией кода базового класса? (Проверка именных соглашений, типа возврата и т. Д.)
  2. Или он просто использует конструкцию исходной структуры класса, хранящейся в mscrolib.dll, и работает что-то похожее на "слой макета", где мы можем применить наши значения и затем вернуть выходную информацию?

"CLR также будет взаимодействовать с типами, содержащимися в библиотеках базовых классов.NET, когда это необходимо", что именно означает "требуемая" часть этого предложения? Потому что, опять же, это то, что я хотел бы понять правильно:)

0 ответов

Я только начал работать над этой книгой. Возможно, вы уже нашли ответ, но для любопытных я положу свои два цента.

Чтобы скомпилированный код можно было запускать на платформе, он должен быть скомпилирован в соответствии с инструкциями для конкретной платформы. Но перед этим код нужно скомпилировать в файл MSIL. Для кода приложения этот файл MSIL создается каждый раз, когда вносятся изменения, и это происходит до CLR. Для BCL уже существуют сборки (файлы MSIL), а в CLR они должны загружаться только в память. Таким образом, механизм выполнения определяет, какие именно сборки следует преобразовать в специфичные для платформы сценарии и загрузить в память.

Так

При необходимости среда CLR также будет взаимодействовать с типами, содержащимися в библиотеках базовых классов.NET.

это означает, что он будет смотреть, какие типы из BCL упоминаются в коде.

Другие вопросы по тегам