VS编译控制台应用程序如何显示"按任意键继续"?

Moa*_*ini 9 .net c# console visual-studio

当我开发一个C#控制台应用程序(它将在服务器上运行)并使用Visual Studio运行它时,我会在程序终止之前收到"按任意键继续"消息.

但是,当我使用CSC手动编译完全相同的C#代码文件时,我的程序没有显示该消息,并在完成其逻辑后立即终止.

有没有人知道如何在不使用VS编译代码的情况下创建相同的功能,并且在没有更改C#代码的情况下添加ReadLine()?

更新:我学习C#时出现的相同消息,我曾经使用带有CSC的TextPad,并且该消息过去没有添加任何Write(Line)/ Read(Line)调用

Pet*_*ham 22

它与编译器无关 - 如果你按下F5它来调试而不是Ctrl-F5在没有调试的情况下运行,那么VS就不会显示提示符.这可能是因为你不会错过它产生的任何输出.

为此,Visual Studio运行cmd.exe,告诉它运行可执行文件,然后暂停:

"C:\WINDOWS\system32\cmd.exe" /c ""...\ConsoleApplication1.exe"  & pause"
Run Code Online (Sandbox Code Playgroud)

调试时可能不会这样做,因为获取子进程子进程的进程ID有点困难.

要为程序添加类似选项,请使用命令行开关告诉应用程序本身暂停,或使用批处理文件运行它然后暂停,或使用快捷方式cmd.exe /c.


Phi*_*ert 14

那是不可能的.运行控制台应用程序时,Visual Studio会生成按任意键的提示.这不是你的计划的一部分.

唯一的方法是在代码中使用Console.Read()

更新:关于你使用TextPad的说法:我不熟悉TextPad,但是如果TextPad在运行控制台应用程序时与Visual Studio做同样的事情,我也不会感到惊讶.

  • 该提示不是由Visual Studio生成的,而是由cmd.exe的pause命令生成的 (2认同)

小智 8

你可以这样做......

static void Main(string[] args)
{
#if DEBUG
    Console.Read();
#endif
}
Run Code Online (Sandbox Code Playgroud)

这样,当您将应用程序构建为"发布"时,程序将不会等待控制台输入.


And*_*are 7

您可以编写一个为您运行exe的批处理脚本,并提示用户按一个键.

批处理脚本看起来像这样:

echo off
YourApp.exe
pause
Run Code Online (Sandbox Code Playgroud)

  • 我建议Chalkey的回答. (2认同)