2010-01-26 1 views
7

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

+1

Почему бы и нет? –

ответ

8

«исполняемый файл» .NET - это действительно маленький исполняемый исполняемый файл, который создает AppDomain, создает экземпляр вашего объекта .NET и вызывает его.

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

Edit: -----

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

+0

Отличный ответ. Это ключевое различие между исполняемой программой .net и библиотекой классов. –

+0

Является частью AppDomain платформы .NET? – Gabriel

+0

@Gabriel: Я не уверен, что понимаю вопрос, но я думаю, что ответ будет да. код будет находиться в mscoree.dll –

1

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

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