代码之家  ›  专栏  ›  技术社区  ›  RBT

“按任意键继续…”在“无调试启动”模式下显示的消息

  •  3
  • RBT  · 技术社区  · 7 年前

    我在Visual Studio中创建了一个空白的C#控制台应用程序,如下所示:

    using System;
    
    namespace ConsoleApplication1
    {
        class Solution
        {
            static void Main(string[] args)
            {
                Console.ReadLine();
            }
        }
    }
    

    当我使用默认值时 Start Debugging 按可选择 F5级 然后程序按预期正常运行。我按 进来 程序结束。

    但当我使用 Start Without Debugging 按可选择 Ctrl键 + F5级 按下后,控制台上会显示一条额外消息 进来 :

    按任意键继续。。。

    enter image description here

    然后我必须按键盘上的另一个键来终止程序。这个神奇的信息来自哪里?为什么它只显示在 无需调试即可启动 选项

    笔记 :项目的生成后事件命令行完全为空。

    2 回复  |  直到 7 年前
        1
  •  5
  •   SoronelHaetir    7 年前

    这就是visual studio不在调试模式下运行控制台程序的方式。据我所知,这是无法控制的。因为它表明它实际上是一个cmd。exe实例,而不仅仅是控制台窗口,我假设VS在命令行上使用了/K标志(我原以为它使用了批处理文件,但现在发现没有必要这样做)。

    这是针对控制台程序运行并简单退出的典型情况进行的,如果没有该消息,这样的程序将不会有机会看到输出。

        2
  •  0
  •   RBT    7 年前

    我能够验证@SoronelHaetir在回答中共享的信息。我在这里通过一些截图来详细说明这些内容,这些截图将补充他帖子中的信息,并帮助你更好地理解这些内容:

    1. 当我使用默认值运行应用程序时 Start Debugging 按可选择 F5级 ,我们可以在任务管理器中看到正在启动的应用程序的可执行文件:

    enter image description here

    当我右键单击任务并选择 Go To Process 选项,我被带到进程选项卡上具有图像名称的进程 ConsoleApp1.exe *32 如下所示。这很有道理。

    enter image description here

    1. 现在,当我使用 Start Without Debugging 按可选择 Ctrl键 + F5级 我们 请勿 请参阅任务管理器中启动的应用程序的可执行文件。事实上我们看到 cmd.exe 正在启动,如下所示:

    enter image description here

    现在,当我右键单击 命令。exe文件 任务并选择 转到进程 选项,我被带到进程选项卡上具有图像名称的进程 cmd.exe *32 如下所示。但还有更多。你也看到了 控制台AP1。exe*32 正在进程选项卡中运行,该选项卡在中不可见 Applications 选项卡。

    enter image description here

    这就是所有的点是如何连接起来的 无需调试即可启动 模式Visual Studio实际上启动了 命令。exe文件 实例,从而启动我们的应用程序 ConsoleApp1.exe .

    我一按enter键, 控制台AP1。exe文件 进程被终止,但 命令。exe文件 进程继续运行,直到按下另一个键,如下所示:

    enter image description here