.net 如何在运行exe后返回退出代码?

.net 如何在运行exe后返回退出代码?,.net,vbscript,.net,Vbscript,我已经创建了一个控制台应用程序,用于验证函数,这个应用程序需要使用vbscript执行。执行此exe后,无论函数是否返回成功,我都要返回一个退出代码。如何在.net中返回状态或退出代码?我假设您正在编写C#或VB.net。在这两种情况下,通常人们都有一个不返回任何内容的主函数,但是您可以将其更改为返回一个整数来表示退出代码 有关C#,请参见 你可以做: static int Main() { //... return 0; } Module mainModule Fun

我已经创建了一个控制台应用程序,用于验证函数,这个应用程序需要使用vbscript执行。执行此exe后,无论函数是否返回成功,我都要返回一个退出代码。如何在.net中返回状态或退出代码?

我假设您正在编写C#或VB.net。在这两种情况下,通常人们都有一个不返回任何内容的主函数,但是您可以将其更改为返回一个整数来表示退出代码

有关C#,请参见

你可以做:

static int Main()
{
    //...
    return 0;
}
Module mainModule
    Function Main() As Integer
        '....
        '....
        Return returnValue
    End Function
End Module
有关VB.NET,请参见

你可以做:

static int Main()
{
    //...
    return 0;
}
Module mainModule
    Function Main() As Integer
        '....
        '....
        Return returnValue
    End Function
End Module

正如@gideon所评论的,在可执行文件中,必须使用
return
语句返回数字


在脚本中,调用此可执行文件后,请阅读
%ERRORLEVEL%
。这是Windows保存返回代码的地方。

除了@gideon之外,您还可以设置

Environment.ExitCode = theExitCode;
在代码的其他部分,如果发生了非常糟糕的事情,请直接退出

运行示例:

check.exe
check returns 0.

check.exe 15
check returns 15.

check.exe nonum
bingo: 'nonum' Input string was not in a correct format.
check returns 1234.
cscript 13921064.vbs
..\cs\check.exe
13921064.vbs would return 0
stdout of check.exe ==>
 check returns 0.

.ExitCode of check.exe 0
Errorlevel:  - %ERRORLEVEL% - ??? <=== surprise, surprise
13921064.vbs returns 0

echo %ERRORLEVEL%
0

cscript 13921064.vbs nonum & echo %ERRORLEVEL%
..\cs\check.exe nonum
13921064.vbs would return 1234
stdout of check.exe ==>
 bingo: 'nonum' Input string was not in a correct format.
check returns 1234.

.ExitCode of check.exe 1234
Errorlevel:  - %ERRORLEVEL% - ???
13921064.vbs returns 1234
0       <=== surprise, surprise

DNV35 E:\trials\SoTrials\answers\13927081\vbs
echo %ERRORLEVEL%
1234
这个VBScript脚本(减少到最低限度,不要在生产中这样做):

运行示例:

check.exe
check returns 0.

check.exe 15
check returns 15.

check.exe nonum
bingo: 'nonum' Input string was not in a correct format.
check returns 1234.
cscript 13921064.vbs
..\cs\check.exe
13921064.vbs would return 0
stdout of check.exe ==>
 check returns 0.

.ExitCode of check.exe 0
Errorlevel:  - %ERRORLEVEL% - ??? <=== surprise, surprise
13921064.vbs returns 0

echo %ERRORLEVEL%
0

cscript 13921064.vbs nonum & echo %ERRORLEVEL%
..\cs\check.exe nonum
13921064.vbs would return 1234
stdout of check.exe ==>
 bingo: 'nonum' Input string was not in a correct format.
check returns 1234.

.ExitCode of check.exe 1234
Errorlevel:  - %ERRORLEVEL% - ???
13921064.vbs returns 1234
0       <=== surprise, surprise

DNV35 E:\trials\SoTrials\answers\13927081\vbs
echo %ERRORLEVEL%
1234
cscript 13921064.vbs
..\cs\check.exe
13921064.vbs将返回0
check.exe的标准输出==>
检查返回0。
.ExitCode的check.exe 0
Errorlevel:-%Errorlevel%-???
答对了:“nonum”输入字符串的格式不正确。
检查返回1234。
.ExitCode of check.exe 1234
Errorlevel:-%Errorlevel%-???
13921064.vbs返回1234

0能否显示您的代码?请在代码中手动放置Console.WriteLine,并从Process.StandardOutput读取值或处理OutputDataReceivedCan I使用vbscript访问主方法返回值?@JEMI您应该能够。如果没有代码,则无法准确地告诉您。这是代码静态int Main(字符串[]args){var ruleManager=new ruleManager();int status=ruleManager.ExecuteRule();return status;}您应该在问题中添加代码。单击
edit
对其进行编辑。还可以使用调用此函数的
VBScript
代码段更新您的问题。看起来它应该可以工作。事实上,我并不是在为执行它而编写vbscript。我的问题是返回一个退出代码