.NET и расширение выходного файла - PullRequest
7 голосов
/ 26 января 2010

Почему Visual Studio компилирует приложение в исполняемый файл, если он в формате MSIL? Разве это не должно быть похоже на Java, который компилирует код в файл .class?

Ответы [ 2 ]

8 голосов
/ 26 января 2010

.NET-исполняемый файл - это на самом деле крошечный исполняемый файл-заглушка _un_managed, который создает домен приложения, создает экземпляр запускаемого объекта .NET и вызывает его.

.NET DLL будет эквивалентен Java. Класс

Редактировать: -----

Jb Evain указывает в комментариях, что DLL-библиотеки .NET также содержат неуправляемую заглушку. Заглушка просто переходит на соответствующую точку входа в mscoree.dll, которая выполняет реальную работу. CorExeMain для exe и CorDllMain для dll.

1 голос
/ 26 января 2010

Поскольку .exe что-то значит для ОС - Windows не нужно регистрировать другой исполняемый тип для запуска. Файлы .EXE «просто работают» из меню «Выполнить», командной строки и оболочки.

Но, возможно, что еще важнее, потому что люди привыкли ожидать поведение файла .exe. Я имею в виду, что вы использовали .EXE файлы в качестве основного формата исполняемых файлов в системах MS в течение большей части 30 лет. Если бы они компилировали исполняемые приложения .net, скажем, с расширением «.CLR», не все знали бы, что с ним делать, и это могло бы замедлить принятие .Net, особенно в первые дни ...

...