通过“无需调试启动”( Ctrl + F5 )在Visual Studio中运行控制台应用程序时,控制台在运行结束时保持打开状态,要求< / p>
按任意键继续。 。
因此需要激活窗口并按下一个键。有时这不合适。
为什么这很重要: 在我编写json序列化代码的那一刻,我的工作流程如下:
一次又一次地执行此操作,无需调试任何内容,只需修剪序列化并检查输出是否正常。
这是像这样的工作流程,其中“按任何...”行为因为需要步骤而阻碍
没有答案:
答案 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应用程序和控制台应用程序之间的区别,始终创建一个控制台窗口,无论您是否需要它。
如果你做需要在控制台窗口显示输出,你有几个选择:
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)
答案 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)