首页 > 解决方案 > .Net Core 应用程序退出代码。Linux 上的不同行为 (RHEL 7)

问题描述

我似乎无法设置 dotnet 核心控制台应用程序的退出代码,以便在 RHEL7 上观察到预期的行为。我正在使用 dotnet 2.0.3。

using System;

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

在 Windows 上,执行程序时错误级别设置正确

dotnet HelloWorld.dll
echo %errorlevel%
12345

在 RHEL7 上,这不是所看到的

dotnet HelloWorld.dll
echo $?
57

我尝试了各种方法来返回退出代码(设置 Environment.ExitCode 属性,从程序返回一个整数),但都没有成功。

我会尽快在最新的 dotnet core 版本(2.1.302)上进行测试,但同时发布这个问题。

有谁知道这里发生了什么?

谢谢

标签: .net-corerhelexit-code

解决方案


我最终发现了问题 - 这是因为在 RHEL7 上,与 Windows 不同,退出代码/错误级别被限制为 8 位整数。我需要将退出代码保持在 [0,255] 范围内。


推荐阅读