7

为什么 Visual Studio 将应用程序编译为 MSIL 格式的可执行文件?不应该像java那样把代码编译成.class文件吗?

4

2 回答 2

8

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

.NET dll 相当于 java .class

编辑: - - -

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

于 2010-01-26T00:12:43.663 回答
1

因为 .exe 对操作系统意味着什么 - Windows 不必注册另一个可执行类型来运行。.EXE 文件从“运行”菜单、命令行和外壳“正常工作”。

但可能更重要的是,因为人们已经开始期待 .exe 文件的行为。我的意思是,在 30 年的大部分时间里,您一直使用 .EXE 文件作为 MS 系统上的主要可执行文件格式。如果他们将可执行的 .net 应用程序编译为“.CLR”扩展名,那么并不是每个人都知道该怎么做,这可能会减慢 .Net 的采用速度,尤其是在早期......

于 2010-01-26T00:17:21.087 回答