从Visual Studio运行控制台应用程序时,避免“按任意键继续”

时间:2013-07-27 12:18:00

标签: visual-studio console-application

通过“无需调试启动”( Ctrl + F5 )在Visual Studio中运行控制台应用程序时,控制台在运行结束时保持打开状态,要求< / p>

  

按任意键继续。 。

因此需要激活窗口并按下一个键。有时这不合适。

为什么这很重要: 在我编写json序列化代码的那一刻,我的工作流程如下:

  • 改编c#代码
  • 运行一个写文件out.json
  • 的控制台应用程序
  • 使用json viewer
  • 在浏览器中查看out.json

一次又一次地执行此操作,无需调试任何内容,只需修剪序列化并检查输出是否正常。

这是像这样的工作流程,其中“按任何...”行为因为需要步骤而阻碍

  • 激活控制台窗口
  • 按键

没有答案:

  • 在单独的控制台中在VS外启动应用程序不是一个答案。
  • 说,你不需要这个。

8 个答案:

答案 0 :(得分:14)

我很确定你不能影响或改变这种行为。

正如您所提到的,它与您的应用程序本身无关,因为当您双击EXE时它不会执行此操作。只有在没有附加调试器的Visual Studio中运行应用程序时,才会看到此效果。

据推测,当您调用 Ctrl + F5 时,Visual Studio会以特定方式运行您的应用程序,导致控制台窗口保持打开状态。我可以想到它可能采取的两种方式:

%COMSPEC% /k "C:\Path\To\YourApplication.exe"

%COMSPEC% /c ""C:\Path\To\YourApplication.exe" & pause"

使用其中任何一个,您看到的暂停行为都会直接进入用于启动应用程序的命令,因此在应用程序外部。因此,除非您有权访问Visual Studio源代码,否则您不会更改它。从您的应用中调用exit功能不会产生任何影响,因为您的应用在消息出现时已经退出。

当然,除了好奇心问题之外,我无法理解为什么它真的很重要。当您使用附加的调试器启动应用程序时,这不会发生,这是您从IDE启动应用程序时99%的时间。由于您没有随应用程序一起提供Visual Studio,因此您的用户 将在VS之外启动应用程序。


为了回应您的问题所做的更新,最佳解决方案是更改您的应用,使其不是控制台应用程序。此行为不会影响标准Windows应用程序;当他们关闭时,他们会关闭。

如果您在控制台窗口上不需要任何输出,那么这很简单:只需change the "Application type" in your project's properties。 Windows窗体应用程序可以正常工作。如果您不显示窗口(也称为窗体),则会自动创建 。这是常规Windows应用程序和控制台应用程序之间的区别,始终创建一个控制台窗口,无论您是否需要它。

如果你需要在控制台窗口显示输出,你有几个选择:

  1. 使用ListBox或ListView控件创建并使用简单表单。通常输出到控制台的每一行,您作为新项添加到列表控件。如果您没有使用控制台的任何“高级”功能,这种方法很有效。
  2. P / Invoke并调用AllocConsole函数来创建Windows应用程序可以使用的控制台。你不需要表格。

答案 1 :(得分:10)

我找到了一个解决方案,如果您正在使用python(我无法测试其他任何东西)。 你需要去

  

工具 - &gt;选项 - &gt; Python工具 - &gt;调试

取消选中Wait for input when process exits normally

我希望你能以某种方式解决这个问题。

答案 2 :(得分:1)

好吧,至少在Visual Studio 2010中,输入

 Console.ReadKey(true);

删除&#34;按任意键继续.....&#34;

答案 3 :(得分:1)

2020年更新:微软已经听了。

enter image description here

它也以“不调试启动”模式关闭控制台;)

该设置有点隐蔽,但可以运行:

enter image description here

答案 4 :(得分:0)

你试过吗(c#)?

Environment.Exit(0)

答案 5 :(得分:0)

在一个非常相关的问题中有一个很好的答案:

https://stackoverflow.com/a/15135181/122687

我认为它比接受的答案更好,因为它不需要你调用AllocConsole并设置任何IO重定向。我不知道如何轻松而稳健地设置IO重定向。

答案 6 :(得分:0)

根据VS2019文档:

在调试停止时自动关闭控制台:告诉Visual Studio在调试会话结束时关闭控制台。

它有效,但前提是您确保项目在调试器打开的情况下启动。这听起来很琐碎,但我首先尝试的是一个包含两个项目的解决方案,一个控制台用于复制要在我的应用程序中使用的文件,另一个用于运行实际的应用程序。我将控制台设置为无需调试即可启动,因为我不需要对其进行调试,但是在运行后并没有将其关闭。仅当将其设置为开始(通过调试)时,此选项才起作用。

答案 7 :(得分:-1)

在vs2017中,您必须取消选中vs-options下的python环境设置:

用德语: Auf Eingabe warten,温德·普罗兹(Wenne d Prozess)