Я пытался регенерировать exe, совершив обратный путь ILDASM, а затем ILASM в исполняемом файле С#. Насколько я понимаю, файл .il, созданный ILDASM, достаточен для генерации .exe назад.
Мне любопытно, почему .NET framework предназначен для использования exe файла для развертывания вместо развертывания файла .il для пользователей. Не мог ли С# компилятор сгенерировать файл .il, а компилятор JIT использовал .IL файл напрямую как вход? Это просто потому, что операционной системе требуется расширение .exe для вызова загрузчика, или это из-за размера файла или соображений производительности?
PS: Вопрос не имеет практического значения. Я задаю этот вопрос, чтобы сделать мои понятия более ясными, поскольку я уверен, что мне не хватает много.