Что именно происходит при запуске исполняемого файла .NET (шаг за шагом до момента загрузки и запуска программы)? - PullRequest
4 голосов
/ 18 февраля 2011

Когда вы запускаете исполняемый файл .NET, что именно происходит, шаг за шагом по порядку.Мое основное понимание состоит в том, что вы запускаете исполняемый файл, CLR выполняет некоторую проверку, компилирует CIL-файл в специфичный для платформы код, загружает его вместе с указанными необходимыми dll (как указано в манифесте) и запускает вашу программу.1001 *

Может кто-нибудь уточнить это, вплоть до уровня "он выделяет память для того и другого"?Мне бы очень хотелось узнать, что происходит, когда вы дважды щелкаете по исполняемому файлу, и когда ваша программа успешно работает.

PS диаграммы, внешние ссылки приветствуются.: -)

Ответы [ 2 ]

2 голосов
/ 18 февраля 2011

Одна книга, чтобы управлять ими всеми: CLR через C # .

2 голосов
/ 18 февраля 2011

Существует причина, по которой эта информация не легко доступна - потому что Microsoft узнала, что как только вы публикуете что-либо, она внезапно должна оставаться неизменной навсегда (источник: 90% блог Раймонда Чена ).

Стандарт ECMA доступен здесь: здесь , хотя из оглавления следует, что он может не охватывать материал, который вам нужен. Это, безусловно, определяет структуру, хотя, вероятно, не внутренние детали реализации.

Для получения конкретных внутренних сведений вам необходимо предоставить как минимум точную версию .NET Framework, которая вас интересует (и мы будем игнорировать другие CLR, такие как Mono ) и детали программы, которую вы запускаете.

Если у вас есть практическая (т.е. отладочная) причина для необходимости этих подробностей, запустите свой исполняемый файл с windbg и выполните процесс загрузки. (Это также будет работать ради интересов, хотя это может быть не так приятно.)

Наконец, Mono является открытым исходным кодом, так что вы можете просмотреть их код, чтобы увидеть, как они решили его реализовать. Очевидно, нет никакой гарантии, что он идентичен тому, как Microsoft реализовал их, но в качестве академического упражнения либо должно быть достаточно.

...