我在Visual Studio中创建了一个空白的C#控制台应用程序,如下所示:
using System;
namespace ConsoleApplication1
{
class Solution
{
static void Main(string[] args)
{
Console.ReadLine();
}
}
}
当我按 F5 使用默认的Start Debugging
选项时,程序会按预期正常运行。我按 Enter ,程序结束。
但是当我按 Ctrl + F5 使用Start Without Debugging
选项时,按 Enter :
按任意键继续......
然后我按下键盘上的其他键来终止程序。这个神奇的消息从哪里来,为什么它只在Start Without Debugging
选项中显示?
注意:项目的构建后事件命令行完全为空。
答案 0 :(得分:5)
这就是visual studio如何在调试模式下运行控制台程序。据我所知,它无法控制。因为它显示它实际上是一个cmd.exe实例而不仅仅是一个控制台窗口我假设VS在命令行上使用/ K标志(我以为它使用了批处理文件,但现在看到没有必要)。
这是针对控制台程序运行并且简单退出的典型情况,没有该消息,这样的程序将不会给出任何查看输出的机会。
答案 1 :(得分:0)
这是C#控制台应用程序的默认行为。根据您的代码,在您编写的主要功能旁边Console.ReadLine();
接受来自用户的按键操作。在此之前它保持屏幕显示按任意键继续。大多数情况下,命令Console.ReadLine()
用于读取应用程序的用户输入。您可以将用户输入的值直接分配给您输入的变量。
答案 2 :(得分:0)
我能够在答案中验证@SoronelHaetir分享的信息。我借助一些截图来详细说明这些内容,这些截图将补充他帖子中的信息并帮助您更好地理解相同内容:
Start Debugging
选项按 F5 运行应用程序时,我们可以看到应用程序的可执行文件在任务管理器中启动:当我右键单击任务并从上下文菜单中选择Go To Process
选项时,我将进入具有图像名称ConsoleApp1.exe *32
的流程选项卡上的流程,如下所示。这很有道理。
Start Without Debugging
选项运行应用程序时,我们不查看可执行文件应用程序在任务管理器中启动。事实上,我们看到cmd.exe
正在启动,如下所示:现在,当我右键单击cmd.exe
任务并从上下文菜单中选择Go To Process
选项时,我将进入具有图像名称{{1}的流程选项卡上的流程} 如下所示。但还有更多。您还会在流程标签中看到cmd.exe *32
正在ConsoleApp1.exe *32
标签中显示。
所以这就是所有点连接的方式,在Applications
模式下,Visual Studio实际上会启动一个Start Without Debugging
实例,然后启动我们的应用程序cmd.exe
。
我按Enter键的那一刻,ConsoleApp1.exe
进程被终止,但ConsoleApp1.exe
进程继续存在,直到我按下另一个键,如下所示: