在VS2019和VS2022中,如何防止控制台应用(.NET Core)打印“以代码0退出”。

13

当我在Visual Studio Community 2019(版本16.3.1)中使用Ctrl + F5(启动无调试)启动.NET Core控制台应用程序时,在控制台窗口末尾会添加以下消息:

C:\ HelloWorld \ bin \ Debug \ netcoreapp3.0 \ HelloWorld.exe(进程1672)以代码0退出。

using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

控制台输出

有没有办法阻止Visual Studio 2019打印这条消息?我尝试了从防止类似消息出现在输出窗口中的解决方案,通过更改选项:工具 > 选项 > 调试 > 输出窗口 > 进程退出消息 = 关闭,但它在控制台窗口中没有任何效果。

Visual Studio选项

注意:这条消息在Visual Studio 2017中不显示。它只在Visual Studio 2019中显示,并且仅针对.NET Core应用程序。

注意2022:被接受的答案在Visual Studio 2022版本17.4.0(最新版本)上不起作用。


1
如果您确定这甚至发生在 Visual Studio 2019 新安装的实例上,我建议您在论坛上创建一个问题。您可以通过点击“帮助 > 发送反馈 > 报告问题”来完成此操作。 - Twenty
1
@Twenty 我几天前更新了Visual Studio到最新版本。我不记得更新之前是否一样,因为我一直在使用VS 2017。我不确定这是问题还是功能。它可能可以在选项中的某个地方进行配置。 - Theodor Zoulias
@Richard 在开发过程中,我经常按Ctrl-F5来测试我的应用程序,而AppPath/ProcessId/ExitCode消息是零值信息,会让我分心,无法看到我真正想要看到的内容。如果我的应用程序使用了退出代码(很少这样做),我可以自己打印它。 - Theodor Zoulias
5
在VS2019中,这是一项功能而非错误。它解决了程序员28年来的一个抱怨,即他们经常忘记在main函数结尾处添加“按任意键继续”代码或设置断点。因此,他们无法读取程序的输出,这在SO和论坛上引起了许多问题。在VS2019中,控制台窗口不再关闭,并如实地报告程序已结束。这是一个纯调试器功能,正常运行程序时看不到它。 - Hans Passant
1
我不确定在没有 Visual Studio 设置的情况下是否可能。通过 Console.OutConsole 将其输出流公开,并通过 Console.SetOut 公开设置器,但这些额外的行直接写入标准输出流。因此,我们无法截取它们。 - Funk
显示剩余5条评论
1个回答

16
您可以通过勾选 工具 > 选项 > 调试 > 一般 > 停止调试时自动关闭控制台 选项来禁用它:

Visual Studio 2019 Options

如控制台本身所述(Visual Studio 2019 v16.3.2):

Console App

这将使控制台仅在启动时没有进行调试(CTRL + F5),而不是退出代码(仍然保持控制台打开):

No exit code


啊!艾文太棒了!非常感谢你! - Theodor Zoulias
2
我刚刚安装了支持新的.NET 7的Visual Studio 2022版本17.4.0,但是上述配置不再阻止控制台(无需调试)中出现“以代码0退出”的消息。 :-( 截图 - Theodor Zoulias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接