Когда генерируется MSIL? - PullRequest
       2

Когда генерируется MSIL?

3 голосов
/ 06 сентября 2011

Допустим, у меня есть библиотека C # Windows Class в моем решении, и я собираю ее в своей IDE VS2010.Вывод в моем каталоге bin: X.dll

1) X.dll не содержит MSIL на этом этапе, но "сжатый байт-код".
Это правда?

2) Этот "сжатый байт-код" каким-то образом преобразуется в MSIL.
Когда это происходит?

3) Когда X.Доступ к dll осуществляется JIT-компилятором CLR, который берет часть MSIL, необходимую для преобразования, и превращает ее в машинный код.
Хорошо ли я справляюсь с этой последней частью?

Кто-нибудь может помочь заполнить пробелыв моем понимании здесь?

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

X.dll содержит байт-код MSIL после его сборки в Visual Studio. Вы можете доказать это, разобрав его с помощью ildasm .

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

0 голосов
/ 29 января 2016

Чтобы ответить на вопрос Dark Falcon по вопросу № 2, код IL (не сжатый байт-код) преобразуется в собственный код JIT-компилятором, метод за методом, при каждом первом вызове.Таким образом, более короткий ответ для № 2 - «при первом обращении к методу».Поля не подлежат этому, свойства сами являются замаскированными методами.

Что касается третьего вопроса, нет, IL не JIT, когда он загружен.Смотри выше.

...