Данная статья создавалась как попытка продолжить изучение не достаточно хорошо знакомой для меня темы восстановления работоспособности [приложений] .Net Framework в системах Windows, а так же поиска проблем ошибок в Net Framework приложениях. Очевидно, что все тут перечисленное представляет собой достаточно упрощенный подход к изучению структур .Net-приложений, тем не менее, в некоторых случаях достаточный для выявления причин неисправностей.
.NET Framework - программная платформа, основой которой является общеязыковая среда исполнения (Common Language Runtime, CLR) байт-кода "промежуточного языка высокоуровневого ассемблера". Из определения "общеязыковая" следует, что она предназначается для выполнения кода модулей, написанных на множестве языков программирования. Получила дальнейшее развитие в виде .NET Core.
Основная концепция создания .Net Framework заключалась в обеспечении свободы разработки, обусловленной возможностью создавать приложения с использованием множества языков программирования, способных исполняться на широком спектре устройств, работающих под разнообразными операционных системах [мультиязычность и кроссплатформенность]. Программа для платформы .NET Framework, в начале исполнения переводится компилятором в единый для .NET промежуточный байт-код "высокоуровневого ассемблера" виртуальной машины .NET (Common Intermediate Language, CIL -- ранее известного как Microsoft Intermediate Language, MSIL), называемый в контексте .NET сборкой (assembly). Далее получившийся код либо исполняется виртуальной машиной Common Language Runtime (общеязыковая среда выполнения, CLR), либо транслируется утилитой NGen.exe в исполняемый код для определенного целевого процессора. И на финальном этапе, встроенный в виртуальную машину CLR компилятор "на лету" (в режиме реального времени) преобразует промежуточный байт-код в машинные коды целевого процессора [для непосредственного исполнения кода ядром].
В некотором смысле .Net Framework это система в системе. Она обеспечивает множество собственных механизмов: управление виртуальной памятью, система безопасности, загрузчик модулей, механизм исключений (обработки ошибок),модель многопоточности, изолированная среда выполнения приложений и многое другое. Тем самым .Net Framework как бы создает еще один уровень абстракции.
больше деталей по поиску причин ошибок .Net Framework