Состоит ли файл .exe, созданный компилятором C#, исключительно из Common Intermediate Language (CIL)?C#

Место общения программистов C#
Anonymous
Состоит ли файл .exe, созданный компилятором C#, исключительно из Common Intermediate Language (CIL)?

Сообщение Anonymous »

Я просто пытаюсь лучше понять, что происходит в простом сценарии, когда следующий код добавляется в файл и сохраняется с расширением .cs:

Код: Выделить всё

public class HelloWorld
{
public static void Main()
{
System.Console.WriteLine("Hello World!");
System.Console.ReadLine();
}
}
а затем эта программа запускается из командной строки Windows с помощью:

Код: Выделить всё

C:\Windows\Microsoft.NET\Framework\v4.0.30319>csc /t:exe /out:C:\HelloWorld\HelloWorld.exe C:\HelloWorld\HelloWorld.cs
Я вижу, что этот процесс создает файл .exe, однако, когда я читаю о процессе компиляции в Википедии, там говорится:

  • Исходный код преобразуется в Common Intermediate Language (CIL), который в CLI является эквивалентом языка ассемблера для ЦП.
    < li>Затем CIL собирается в форму так называемого байт-кода и создается сборка CLI.
  • После выполнения сборки CLI ее код передается через JIT-компилятор среды выполнения для генерации собственный код...
  • Нативный код выполняется процессором компьютера.

Значит, сам файл .exe состоит исключительно из общего промежуточного языка? И является ли сам этот файл тем, что в статье в Википедии называется «сборкой CLI»? Я немного сбит с толку, потому что вижу только файл .exe, а для меня термин «сборка» подразумевает более одного файла.

И связанный с этим вопрос:
  • есть ли JIT-компилятор где-то в Microsoft. NET, и после выполнения файла .exe файл связывается с JIT-компилятором, который затем выводит инструкции в собственном коде?


Подробнее здесь: https://stackoverflow.com/questions/177 ... common-int

Вернуться в «C#»