想象一下,在构建完成后,一个.NET应用程序启动时,无论是控制台还是WinForm。除了编译时的标志,如/subsystem
,/out
等,操作系统(当前为Windows)或.NET虚拟机(我不知道哪个会先运行应用程序)如何决定要运行哪个窗口系统,并在想要运行所需系统时执行什么操作?
想象一下,在构建完成后,一个.NET应用程序启动时,无论是控制台还是WinForm。除了编译时的标志,如/subsystem
,/out
等,操作系统(当前为Windows)或.NET虚拟机(我不知道哪个会先运行应用程序)如何决定要运行哪个窗口系统,并在想要运行所需系统时执行什么操作?
我看到问题已经更新以反映Frédéric Hamidi的评论解决方案,但为了遵守Stack Overflow的问答格式,我将其作为回答并设置了Community Wiki标志,如"在评论中解决了问题的无答案问题(或在聊天中扩展)"。
有一个标志。在可执行文件本身中,在PE头的某个地方。该标志在构建时设置,并指示应用程序想要在哪个子系统下运行(GUI或控制台)。加载器读取该标志并相应地设置控制台。这比.NET更早--CLR在这里没有带来任何新东西。