Re[2]: CLR COM Server. Где?
От: fronter3  
Дата: 04.07.07 10:22
Оценка:
Здравствуйте, _Morpheus_, Вы писали:

_M_>Здравствуйте, fronter3, Вы писали:


F>>Как выяснилось CRL реализована в MSCorWks.dll (~5MB)

F>>И насколько я понял, при создании процесса (в результате запуска управляемой сборки), CLR загружается в каждый процесс.

_M_>CLR реализована в MSCOREE.DLL. При запуске дотнет приложения под Win выполняется обычный x86 код, который просто передает управление в функцию _CorExeMain из статически прилинкованой MSCOREE.DLL. Таким образом MSCOREE.DLL загружается в каждый дотнет процесс (это относится к Microsoft реализации дотнета). _CorExeMain считывает заголовок EXE файла из которого произведен вызов, находит IL код, компилирует код необходимый для выполнения Main, подставляя на место обращений к другим методам свой хук и передает этому коду управление. Если управление дошло до одного из хуков, то производится компиляция метода к которому произошло обращение и хук заменяется на адрес по которому произведена компиляция этого метода — в следующий раз этот вызов будет произведен сразу, без компиляции.


Рихтер:

The CLR itself isn't implemented in MSCorEE.dll; it is implemented in a file called
MSCorWks.dll.

Так же он утверждает что MSCorEE.dll это некий shim который и грузит нужную CLR:

By default, when a managed executable starts, the shim examines the executable file and
extracts the information indicating the version of the CLR that the application was built and
tested with


Но вопрос быд не в CLR а где находится COM Server? в отдельном процессе или грузится в каждый процесс, тем самым увеличивая его на 5 МБ по умолчанию...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.