Небезопасный код
По умолчанию компилятор C# компании Microsoft генерирует безопасный код. Под этим термином понимается код, безопасность которого подтверждается в процессе верификации.
Небезопасный код - код, который позволяет работать напрямую с адресами памяти и манипулировать там байтами. Такой код нужно помечать лючевым словом unsafe
Когда JIT-компилятор пытается откомпилировать небезопасный метод, он сначала убеждается в том, что сборке, содержащей метод, были предоставлены разрешения. Если всё норм, то JIT компилирует код, а CLR доверяет этому коду :)
NGen.exe
Программа NGen exe, входящая в поставку .NET Framework, может использоваться для компиляции IL-кода в машинный код при установке приложения на машине пользователя. Так как код компилируется на стадии установки, JIT-компилятору CLR не приходится компилировать его во время выполнения, что может улучшить быстродействие приложения. Программа NGen.exe полезна в двух ситуациях.
- Ускорение запуска приложения (т.к компиляцию уже не нужно выполнять на стадии выполнения кода)
- Сокращение рабочего набора приложения