Подтвердить что ты не робот

Почему сборка .exe файла?

Сборка в .net Framework - это, как я понимаю, файл промежуточного языка + некоторые метаданные, манифест и, возможно, что-то еще.

CLR преобразует сборку в машинный код, который может быть выполнен на данном локальном компьютере.

Это означает, что сборка не должна выполняться машиной перед ее обработкой с помощью CLR. Если это так, то почему у него есть расширение .exe, которое выполняется на компьютерах Windows?

4b9b3361

Ответ 1

Так как Windows необходимо создать процесс, и первое, что делает .exe, это host CLR, загрузив mscoree.

От CLR через С#:

После того, как Windows проверила EXE заголовок файла, чтобы определить, следует ли создать 32-битный процесс, 64-битный процесс или процесс WoW64, Windows загружает версию x86, x64 или IA64 MSCorEE.dll в адрес процесса пространство. В x86-версии Windows, x86-версия MSCorEE.dll может быть найдено в C:\Windows\System32 каталог. На версии x64 или IA64 Windows, версия x86 MSCorEE.dll можно найти в C:\Windows\SysWow64, тогда как 64-разрядная версия (x64 или IA64) можно найти в Каталог C:\Windows\System32 (для соображения обратной совместимости). Затем, процесс "первичный поток" вызывает метод, определенный внутри MSCorEE.dll. Этот метод инициализирует CLR, загружает сборку EXE, а затем вызывает ее метод точки входа (Main). В этот точка, управляемое приложение завершено и работает.

Ответ 2

Недавно я написал сообщение в блоге CLR на сборке .NET и как он вписывается в исполняемый файл PE файла. Целую серию можно найти здесь.

По сути, внутри сборки .NET крошечный бит собственного кода, который запускает CLR. Однако этот код существует только для обратной совместимости. Из Windows XP загрузчик ОС изначально знает, как загрузить CLR для исполняемого файла, в котором есть заголовок CLI.

Ответ 3

.NET.exe - это особый вид .exe, который сначала загрузит CLR (Common Language Runtime). Затем он скомпилирует IL-код внутри .exe через CLR.

Файл .exe, скомпилированный через .NET framework, является своего рода Portable Executable. В .exe есть раздел заголовка CLR и CLR. Когда EXE загружается, ОС будет получать контроль над CLR. Секция данных CLR в .exe имеет метаданные и сегмент IL (промежуточный язык). Сегмент метаданных содержит информацию о сборке (например, манифест сборки). Сегмент IL содержит код программы в формате IL. Это промежуточный формат, похожий на байт-код Java.

Ответ 4

Так как он по-прежнему является EXEcutable.