我已经在此处和此处以及其他地方阅读了有关为 .NET 控制台应用程序设置退出代码的不同方法。在 Windows 上从 cmd.exe(或在 powershell 中执行时在 $LastExitCode 中)执行控制台应用程序后,它们都会在 %ERRORLEVEL% 中产生正确的值。
但是,当我创建一个简单的 C# 或 VB.NET 控制台应用程序并从调试器运行它时,调试器输出窗口中列出的退出代码始终为零,除非使用return、Environment.Exit(Int32)或Environment.ExitCode使用或在项目选项中禁用Visual Studio 托管进程时。
两者的调试输出,
namespace TestDotNetConsoleAppExitCode
{
class Program
{
static int Main(string[] args)
{
return -3;
}
}
}
和
Module Module1
Function Main() As Integer
Return -3
End Function
End Module
结果是
程序“[...] ....vshost.exe”已退出,代码为 0 (0x0)。
这至少发生在 Win10 和 VS2010 和 VS2015 中,所有.NET 框架从 2.0 到 4.7.2,但在.NET Core上没有(那里没有 vshost)。
我缺少一些项目或视觉工作室选项吗?