У меня есть несколько вопросов о порядке инициализации для CLR и CRT для смешанных сборок .NET (т.е. имеется в виду смешанные управляемые / неуправляемые сборки C ++).
Итак, если у меня есть файл dll сборки смешанного режима, и он загружается через Assembly.Load. Я заметил, что любые статические собственные объекты не будут инициализированы или вызваны до тех пор, пока сначала не будет вызван некоторый управляемый код. В ПОРЯДКЕ. Итак, я полагаю, что при запуске сначала инициализируется код CLR, а инициализация CRT вызывается последней. Как порядок на отключение? Завершается ли сначала CRT, а последним - CLR?
Так вот как это происходит?
start of program lifetime
initilialize CLR
...initilialize CRT
...construct native static instances
... program runs....
...shutdown CLR
...destruct native static instances
shutdown CLR
end of program lifetime
Или в другом порядке?
Мой вопрос также относится к сборкам смешанного режима, которые являются исполняемыми файлами (например, .exe). Это похоже?
start of program lifetime
initilialize CLR
...initilialize CRT
...construct native static instances
... program runs....
...shutdown CLR
...destruct native static instances
shutdown CLR
end of program lifetime