。NET 5和.NET Core通常为什么生成可执行文件?

问题描述 投票:0回答:1

我爱.NET!这是我最喜欢开发各种应用程序的框架。但是我有一个非常困惑的问题。这是我第一次来,所以我希望这是一个好问题。

所以我理解.NET的方式就是这样。假设您是C#开发人员(像我一样!)

C#应用程序(源代码)-> csc.exe(编译器)-> .NET应用程序(在MSIL中)

为什么输出.NET应用程序是Windows可执行文件?我认为整个想法是您的源代码可以编译为针对CLR的IL。

但是,.NET Core和.NET 5生成Windows可执行文件,该可执行文件在OS而非虚拟机之上运行。

这不同于Java,Java编译为.class字节码(不是exe),并且这些文件确实在虚拟机上运行(稍后您可以将所有类文件打包到.jar中)

我想问的是,为什么c#编译器和类似程序不会生成在.NET上运行的特定应用程序类型。

我的最佳猜测是,生成的Windows exe实际上不是Windows-exe。这是某种.NET-exe。但是在那种情况下,为什么它不能在具有.NET Core的任何平台上运行? Linux不知道什么是exe文件。

谢谢大家!抱歉,这是一个令人困惑的问题。.

.net .net-core cil .net-5
1个回答
0
投票

这是一个常规可执行文件,但其中包含的唯一本机代码是一个小的存根,它将调用.NET运行时。然后,运行时将检查该文件中嵌入的MSIL,然后执行其余操作。

© www.soinside.com 2019 - 2024. All rights reserved.