.NET和输出文件扩展名

Gab*_*iel 7 cil

为什么Visual Studio将应用程序编译为可执行文件,如果它是MSIL格式?不应该像java一样将代码编译成.class文件吗?

Joh*_*ler 8

.NET"可执行文件"实际上是一个很小的_un_managed存根可执行文件,可以创建一个AppDomain,实例化你的启动.NET对象并调用它.

.NET dll将等同于java .class

编辑:-----

Jb Evain在评论中指出.NET dll还包含一个非托管存根.存根只是跳转到适当的入口点,mscoree.dll即实际工作.CorExeMain对于exe和CorDllMaindll的.

  • 这不是很准确.托管.exe的非托管部分仅在Windows 2000和Windows 98上执行.自Windows XP起,Windows的PE加载程序能够检测托管可执行文件,并将其提供给.net CLR.存在在大多数情况下是无用的.另外,它不会创建任何域或调用托管对象,它只是直接跳转到mscoree.dll中的CorExeMain或CorDllMain. (3认同)