.NET中启动时控制台应用程序和Windows应用程序有什么区别?

4

想象一下,在构建完成后,一个.NET应用程序启动时,无论是控制台还是WinForm。除了编译时的标志,如/subsystem/out等,操作系统(当前为Windows)或.NET虚拟机(我不知道哪个会先运行应用程序)如何决定要运行哪个窗口系统,并在想要运行所需系统时执行什么操作?


这只是确定默认包含哪些库,对吧?您能否将Windows窗体库添加到控制台应用程序中并创建和显示窗体?我知道,这是一个问题中的问题... - ps2goat
3
好的,我会尽力为您翻译这篇文章。这是一个关于在Python中如何使用多线程的问题。建议您在编写多线程代码时要小心,了解如何正确地同步线程以避免出现竞态条件等问题。以下是问题的原文:"Can someone explain the GIL in plain English? I've heard the terms Global Interpreter Lock and GIL thrown around a lot in discussions about Python, but I'm not exactly sure what they mean or why they're significant. What is the GIL and how does it affect multi-threaded programs? Are there any workarounds?" - Robert Harvey
1
与之密切相关(请参阅接受的回答):Win32应用程序、Windows窗体应用程序和控制台应用程序之间有什么区别? - Frédéric Hamidi
@ps2goat 1-不,2-是的。 - EZI
2
@atoi,有一个标识。在可执行文件本身中,在PE头的某个位置设置该标识,该标识在构建时被设置,并指示应用程序想要在哪个子系统下运行(GUI或控制台)。加载器读取该标识并相应地设置控制台。这比.NET早-- CLR在这里没有带来任何新东西。 - Frédéric Hamidi
显示剩余4条评论
1个回答

2

我看到问题已经更新以反映Frédéric Hamidi的评论解决方案,但为了遵守Stack Overflow的问答格式,我将其作为回答并设置了Community Wiki标志,如"在评论中解决了问题的无答案问题(或在聊天中扩展)"。

有一个标志。在可执行文件本身中,在PE头的某个地方。该标志在构建时设置,并指示应用程序想要在哪个子系统下运行(GUI或控制台)。加载器读取该标志并相应地设置控制台。这比.NET更早--CLR在这里没有带来任何新东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接