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

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

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

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

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

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

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

echo off YourApp.exe pause 

它与编译器无关 – 如果按F5调试它而不是Ctrl-F5而不调试运行,则VS不会显示提示。 这可能是因为你不会错过它产生的任何输出。

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

 "C:\WINDOWS\system32\cmd.exe" /c ""...\ConsoleApplication1.exe" & pause" 

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

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

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

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

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

你可以这样做……

 static void Main(string[] args) { #if DEBUG Console.Read(); #endif } 

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

此行为与您使用的编译器无关。 使用Visual Studio进行编译时,在Visual Studio外部运行可执行文件实际上将与在命令行上使用CSC编译时执行的操作完全相同。 Visual Studio(和TextPad)正在添加逻辑,以在控制台上添加“按任意键以继续”消息。

如果您希望应用程序保持打开状态,则需要执行类似Console.ReadLine()的操作来阻止执行,以便应用程序无法完成其执行。

如果您在调试时需要相同的function,则可以执行此操作。

 if (Debugger.IsAttached) { Console.WriteLine("Press any key to continue . . ."); Console.ReadKey(true); } 

问题是为什么你想要这种行为? 按任意键以继续function,以便您可以看到应用程序的输出。 另一方面,如果您构建代码并从命令提示符(控制台)运行它,则在应用程序完成时不会关闭,因此您可以看到输出。

如上所述,按任意键继续是IDE的一项function,与您正在编写的代码无关。 该function的目的是允许您查看控制台应用程序的输出。